说明
Hive默认是所有文件都是UTF8的。Hive将按照UTF8编码格式对数据文件进行解析和查询。
如果数据文件不是UTF8,则需要SerDe支持指定编码格式。对于常用的LazySimpleSerDe是支持指定字符集的。
SerDe is a short name for “Serializer and Deserializer.”
Hive uses SerDe (and !FileFormat) to read and write table rows.
HDFS files –> InputFileFormat –> –> Deserializer –> Row object
Row object –> Serializer –> –> OutputFileFormat –> HDFS files
使用
指定SerDe和字符集。
1 2 3 4 |
CREATE EXTERNAL TABLE student8(id STRING, name STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES("field.delim"=',',"serialization.encoding"='GBK')
LOCATION '/data/student8/';
|
注意:为指定字符集,必须显式指定SERDE的类。指定SerDe类后,则不允许使用"FIELDS TERMINATED BY",而是要显式通过"field.delim"属性指定分隔符。
文章转载地址:http://blog.whohelpme.com/bbs/topic/singleIndex/23757/1.html