hive中查询案例(表的建立以及split函数使用)

来源:互联网 发布:局域网管控软件 编辑:程序博客网 时间:2024/06/05 04:22

1.hive表的两种类型

在hive上创建表时,有内表与外表两种类型,对应的语句为
CREATE TABLECREATE EXTERNAL TABLE
其中创建内表过程中,hive会将数据移动到数据仓库指向路径。
而创建外表时,记录数据所在路径,不对数据进行任何操作。
因此删除数据表时,内表的元数据与数据一同删除,而外表数据不会改动,仅删除元数据。在使用时尽量使用外表,以防不时删除表带来数据缺失的不便。

2.hive表的分区

hive表的分区是指在创建表时指定partition的分区,每个分区以文件夹的形式单独存在表文件夹的目录下。创建代码如下:
CREATE EXTERNAL TABLE transaction(
Type string,
TransID string,
AgentID string,
Client string,
RcptTime string,
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY ‘\n’
PARTITIONED BY(year string,month string)
/*PARTITIONED BY为分区语句*/
STORED AS TEXTFILE
LOCATION '/user/data';

注意:LOCATION后面跟的是HDFS系统下的文件目录,若不指定则默认创建为 /user/hive/warehouse 目录

hive分区不是表中实际的字段,在使用时一般预先在hdfs上创建好分区对应的目录路径,再使用分区。对于transaction表,事先在hdfs上创建/user/data/year/month文件夹,然后创建表。

动态分区/静态分区(待续….)

3.hive表导入数据的几种方式

参照该博客,讲的很详细——Hive总结(七)Hive四种数据导入方式
http://blog.csdn.net/lifuxiangcaohui/article/details/40588929

4.split函数使用

split是hive中的字符串分割函数,使用非常简单。
split(str, regex) - Splits str around occurances that match regex
表中RcptTime的数据格式类型为“2014/7/4 14:50”使用split函数提取其中小时数的语句为split(split("2014/7/4 14:50",' ')[1],':')[0]
首先对空格进行分割,得到两部分{“2014/7/4” “14:50”},其中[1]={“14:50”}。然后同理得到小时数14。

0 0
原创粉丝点击