data is hive table在模式演化后将新列显示为null,并在格式为parquet时指定默认值

qzwqbdag  于 2021-06-24  发布在  Hive
关注(0)|答案(0)|浏览(331)

我有avro数据,正在写入hdfs与hive集成打开 "format.class":"io.confluent.connect.hdfs.parquet.ParquetFormat" 以及 "schema.compatibility": "BACKWARD" .
使用默认值向架构添加一个新列并发送一些数据。
例如,初始模式: [{"name":"a1","type":"string"}] 新架构: [{"name":"a1","type":"string"},{"name": "a2", "type": "string", "default": "a2defval"}] 这里有两个问题:
发送a1、a2列的数据。前任。 {"a1":"val2","a2":"a2val2"} Hive显示: val2 NULL 重新启动连接器,然后显示配置单元 val2 a2val2 在架构演化之前推入的旧数据不会使用a2(新列)配置单元的默认值进行更新,但仍反映: val1 NULL 这是预期的吗?我对格式类avro做了同样的测试,没有遇到这两个问题。
Parquet配置单元表说明不显示默认值, StorageDescriptor(cols:[FieldSchema(name:a1, type:string, comment:null), FieldSchema(name:a2, type:string, comment:null), FieldSchema(name:partition, type:string, comment:)] 但hdfs中parquet文件页脚中的模式显示默认值: parquet.avro.schema▒{"type":"record","name":"myrecord","fields":[{"name":"a1","type":"string"},{"name":"a2","type":{"type":"string","connect.default":"a2defval"},"default":"a2defval"}]

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题