自定义hive文件和记录格式及文本文件数据编码

(1)一段 建表语句:

[ROW FORMAT row_format] 
[STORED AS file_format]
| STORED BY 'storage.handler.class.name'
[WITH SERDEPROPERTIES (...)] -- (Note: Available in Hive 0.6.0 and later) ]

row_format :
:DELIMITED
[FIELDS TERMINATED BY char [ESCAPED BY char]]
[COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char]
[LINES TERMINATED BY char]
[NULL DEFINED AS char] -- (Note: Available in Hive 0.13 and later)
  | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]

file_format:
: SEQUENCEFILE
| TEXTFILE -- (Default, depending on hive.default.fileformat configuration)
| RCFILE -- (Note: Available in Hive 0.6.0 and later)
| ORC -- (Note: Available in Hive 0.11.0 and later)
| PARQUET -- (Note: Available in Hive 0.13.0 and later)
| AVRO -- (Note: Available in Hive 0.14.0 and later)
| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

(2)根据建表语句逐层展开:hive的存储形式,引申思考下行式存储、列式存储的 在读取时的优劣

      hive表数据在存储在文件系统上的,因此需要有文件存储格式来规范化数据的存储,一边hive写数据或者读数据。hive有一些已构建好的存储格式,也支持用户自定义文件存储格式。主要由两部分内容构成file_format和row_format,两者息息相关。

(3)文件格式:TEXTFILE,SEQUENCEFILE,RCFILE  及 自定义输入格式DuallnputFormat

(4)记录格式:SerDe

(5)CSV和TSV SerDe

SerDe is a short name for "Serializer and Deserializer."
Hive uses SerDe (and FileFormat) to read and write table rows.
HDFS files --> InputFileFormat --> <key, value> --> Deserializer --> Row object
Row object --> Serializer --> <key, value> --> OutputFileFormat --> HDFS files

 

load数据时 根据表的文件格式及分割方式 直接写入存储,读时校验数据

hive的读时模式 与 传统关系型数据库写入模式的差异

posted @ 2019-03-20 20:58  瓜皮望翕  阅读(543)  评论(0编辑  收藏  举报