私はflume + kafkaを使用してログデータをhdfsにシンクします。私のシンクのデータ型はAvroです。 avroスキーマ(.avsc)では、列として80個のフィールドがあります。新しい列に異なるavroスキーマを使用
だから私は今、その
CREATE external TABLE pgar.tiz_biaws_fraud
PARTITIONED BY(partition_date INT)
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'
LOCATION '/data/datapool/flume/biaws/fraud'
TBLPROPERTIES ('avro.schema.url'='hdfs://xxxx-ns/data/datapool/flume/biaws/fraud.avsc')
などの外部表を作成し、私はアブロスキーマに25の以上の列を追加する必要があります。その場合、
私は105の列を持つ新しいスキーマで新しいテーブルを作成する場合、私は1つのプロジェクトの2つのテーブルがあります。また、今後数日でいくつかの列を追加または削除すると、そのために新しい表を作成する必要があります。私は、同じプロジェクトに異なるスキーマを使用するテーブルがたくさんあることを恐れています。
現在のテーブルで古いスキーマを新しいスキーマに置き換えた場合、1つのプロジェクトに対して1つのテーブルしか持たなくなりますが、スキーマの競合のために古いデータを読み込むことはできません。
このような場合にavroスキーマを使用する最良の方法は何ですか?
デフォルト値としてnullを追加する方法はありますか? – colintobing
私の答え、幸運@colintobingを更新しました – neverwinter