hive的常用操作

Posted xmanman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive的常用操作相关的知识,希望对你有一定的参考价值。

1、hive的数据类型

tinyint/smallint/int/bigint
tinyint:从 0 到 255 的整型数据
smallint:从 0 到 65535 的整型数据
int:从 0 到 4294967296 的整型数据
bigint:所有数字
float/double
boolean
string
date
timestamp

2、基本操作

显示所有库:show databases;
创建库:create database media_pro;
切换到指定库:use media_pro;
查看表结构:desc formatted t_pro_user_list;

创建分区表:
create table OUFEI_CHARGE_ORDERINFO_LOG
(state_date string,
create_date date,
sendtimes int) row format delimited fields terminated by \'\\t\';

3、进阶操作

  ①、分区表

create table OUFEI_CHARGE_ORDERINFO_LOG
(state_date string,
 create_date datestamp,
 sendtimes int)
 partitioned by (logdate string)  row format delimited fields   terminated by \'\\t\';

  这种正常的表存放的目录就是你当前库目录的下级路径:

  

  上图中的标志的分别是:分区字段、表所在库、表所在路径、表类型

  ②、外部表

 create external table t_detail
 (state_date string,
  create_date datestamp,
  sendtimes int)
  partitioned by (logdate string)row format delimited fields terminated by \'\\t\' location \'/hive_exterdir/\';
 //如果不加location的话,其实就是个内部表

  

  上图的标红的分别是:分区字段、指定数据文件路径(后面将要导入的数据放进来就行load一下就行)、表的类型

  外部表名在hdfs上是看不见的

  ③、导数load in datapath

   内部表导入:

    load data inpath  \'/userdata/order.txt\' into table oufei_charge_orderinfo_log partition (logdate=\'2017-06-16\');

    这里表示将userdata文件夹下的order.txt文件导入表中,并以\'2017-06-16\'作为分区字段的值;这里如果userdata下没有文件夹的话,可以把后面的文件名省略;

   外部表导入:

    load data inpath  \'/hive_exterdir/detail.txt\' into table t_detail partition (logdate=\'2017-06-16\');

      导入成功后,你会发现之前的detail.txt文件会被移动到分区目录下

    

   ④、总结:内部表和外部表的区别:

    

1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!内部表则不一样;
2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!
那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建内部表,否则使用外部表!

  

     

    

 

以上是关于hive的常用操作的主要内容,如果未能解决你的问题,请参考以下文章

提效小技巧——记录那些不常用的代码片段

hive中 常用操作

Hive 系列—— Hive 常用 DDL 操作

hive的常用操作

hive常用操作一

C#程序员经常用到的10个实用代码片段 - 操作系统