Hive应用(1.2)文本文件数据编码及读时模式

1.文本文件数据编码

Hive在文本文件中默认分割符如下:

分隔符 描述
\n 默认的记录分隔符,两条记录由\n进行切分
^A 默认的列分隔符,一条记录的不同列由^A切分,八进制编码\001
^B ARRARY、STRUCT、MAP中的元素分割,八进制编码\002
^C MAP中的键值之间分割,八进制编码\003

可以在建表时自定义这4个分隔符:

1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE users (
name STRING,
age SMALLINT,
address STRUCT<street:STRING, city:STRING, state:STRING>,
contacts MAP<STRING, STRING>,
friends ARRAY<STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEM TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE; --指定以文本文件存储

2.读时模式

关系数据库通常使用写时模式(schema on write):在数据写入时检查是否符合schema。

Hive使用读时模式,即在读取时检查数据,如果数据不正确则返回null