created: 2020-04-18T04:01:07.000Z

hive(athena)の InputFormat, OutputFormat, SerDe

hive の create table は次のようなものである

CREATE TABLE test(id INT, name STRING) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' 
STORED as INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'

このなかの SERDE, INPUTFORMAT, OUTPUTFORMAT についてメモ

INPUTFORMAT, OUTPUTFORMAT

hive には external storage と hive warehouse 2種類のデータストアがある

これらのストアされたデータの形式はcsvからparquetまで色んなものが使えるが、どのデータ構造でストアされているかを InputFormat, OutputFormat にて定義しておく

  • データを読みだすときには InputFormat の定義が使われ
  • データを書き出すときには OutputFormat の定義が使われる

SerDe

Deserializer, Serializer のこと

InputFormat によって 読みだしたファイルのレコードをどのようにパースしてRowオブジェクトにするかを定義するのが Deserializer であり、同様に結果のRowをどうシリアライズするかが Serializer である

参考