Hive应用(8.1)自定义文件和记录格式

1. 文件格式

1.1 文本文件

文本文件是默认的文件格式,通常情况一行为一条记录。文本文件支持直接查看,且灵活性更高。

1.2 SequenceFile

SequenceFile是Hadoop支持的标准文件格式,该格式支持块级别和记录级别的压缩,支持块级别的文件分割。

1.3 RCfile

RCfile使用列式存储,特定情况下列式存储的效率更高,且压缩更为高效。例如:一张宽表有几千个字段,而查询时只需要几个字段,这个时候扫描需要过滤大部分的数据,很浪费时间,而使用列式存储只需要扫描指定的列即可。

2. 记录格式

Hive内置了一下SerDe,同时第三方也有一些SerDe可以使用。

一些常见的SerDe:

  1. CSV 和 TSV SerDe

    1
    2
    3
    4
    5
    ADD JAR /path/to/csv-serde.jar;
    CREATE TABLE stocks(ymd STRING, ...)
    ROW FORMAT SERDE 'com.bizo.hive.serde.csv.CSVSerde'
    STORED AS TEXTFILE
    ...;
  1. JSON SerDe

    1
    2
    3
    4
    5
    6
    7
    8
    ADD JAR /path/to/csv-serde.jar;
    CREATE TABLE stocks(ymd STRING, ...)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde'
    WITH SERDEPROPERTIES (
    "ymd"="$.ymd"
    )
    STORED AS TEXTFILE
    ...;
  1. Avro Hive SerDe