3.6 Hive表字段、行、map默认分隔符

2016-04-16 14:11:30 17,977 0

在Hive0.11.0版本新引进了一个新的特性,也就是当用户将Hive查询结果输出到文件,用户可以指定列的分割符,而在之前的版本是不能指定列之间的分隔符,这样给我们带来了很大的不变,在Hive0.11.0之前版本我们一般是这样用的:

hive> insert overwrite local directory '/home/wyp/Documents/result'
hive> select * from test;

保存的文件列之间是用^A\x01)来分割

196^A242^A3 186^A302^A3 22^A377^A1 244^A51^A2

注意,上面是为了显示方便,而将\x01写作^A,在实际的文本编辑器我们是看不到^A的,而是一个奇怪的符号。

hive 默认的字段分隔符为ascii码的控制符\001,建表的时候用fields terminated by '\001',如果要测试的话,造数据在vi 打开文件里面,用ctrl+v然后再ctrl+a可以输入这个控制符\001。按顺序,\002的输入方式为ctrl+v,ctrl+b。以此类推。

控制符在java代码中如何输入呢?采用如下方式:

byte[] bytes = new byte[] {5};
String sendString=new String(  bytes ,"GBK")

这样可以输入控制符\005。

CREATE TABLE page_view(viewTime INT, userid BIGINT,
     page_url STRING, referrer_url STRING,
     ip STRING COMMENT 'IP Address of the User')
 COMMENT 'This is the page view table'
 PARTITIONED BY(dt STRING, country STRING)
 CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS
 ROW FORMAT DELIMITED
   FIELDS TERMINATED BY '\001'
   COLLECTION ITEMS TERMINATED BY '\002'
   MAP KEYS TERMINATED BY '\003'
 STORED AS SEQUENCEFILE;


上一篇:3.5 外部表 下一篇:5.0 JDBC操作HIVE