Я использую 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 столбцов в Avro схеме. В этом случае
Если я создаю новую таблицу с новой схемой, которая содержит 105 столбцов, у меня будет две таблицы для одного проекта. И если я добавлю или удалю некоторые столбцы в ближайшие дни, я должен создать для этого новую таблицу. Я боюсь иметь много таблиц, которые используют разные схемы для того же проекта.
Если я поменяю прежнюю схему на новую схему в текущей таблице, у меня будет только одна таблица для одного проекта, но я больше не могу читать и получать старые данные из-за конфликта схемы.
Каков наилучший способ использования схемы Avro в случае, если это так?
Как добавить значение null в качестве значения по умолчанию? – colintobing
Я обновил свой ответ, удачи @colintobing – neverwinter