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 である