hive create hive表時,可以使用 ROW FORMAT DELIMITED 來指定 FIELDS TERMINATED BY '\t' (以\t為例)
使用單一char的分隔符,來分隔record。
預設是使用ctrl a 也就是\000 。
hive 是屬於schema on read ,當讀取或者操作data時,才會去parse資料。
一般可以採用,SERDE去parse你的record。
實際情況中,若是你從 RDB導入 hive中,你會發現你的field可能很多,
大概在大於30的regex的時候,會有無法啟動的情況。
所以,採用自定義的 INPUTFORMAT 與 OUTPUTFORMAT
CREATE TABLE WEBLOG(
(
WEBPAGEID STRING,
URL STRING,
TITLE STRING
CDATE DATE
)
stored as INPUTFORMAT 'MULTICHARInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' ;
hive 中 透過重寫 INPUTFORMAT 來parse讀入的record,
要輸出則使用 OUTPUTFORMAT,可預先定義好的 HiveIgnoreKeyTextOutputFormat
HiveOutputFormat (Hive 0.10.0 API)
http://hive.apache.org/docs/r0.10.0/api/org/apache/hadoop/hive/ql/io/HiveOutputFormat.html
org.apache.hadoop.hive.ql.io
Interface HiveOutputFormat
All Superinterfaces:
org.apache.hadoop.mapred.OutputFormat
All Known Implementing Classes:
AvroContainerOutputFormat, HiveBinaryOutputFormat, HiveIgnoreKeyTextOutputFormat, HiveNullValueSequenceFileOutputFormat, HiveSequenceFileOutputFormat, RCFileOutputFormat, Rot13OutputFormat
甚至可以使用RCFileOutputFormat用RCFile的格式當hive的輸出。
(在hive中,如何使用 rcfile,在接下來會談到。)
詳細的源碼 可以在 peicheng at github 上取得
hive-archive/MULTICHAR_jar at master · peicheng/hive-archive · GitHub
https://github.com/peicheng/hive-archive/tree/master/MULTICHAR_jar
沒有留言:
張貼留言