close
[hadoop][hive] multi char delimiter 多字節 分隔符

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

arrow
arrow
    文章標籤
    rcfile hadoop hive
    全站熱搜

    peicheng 發表在 痞客邦 留言(0) 人氣()