我有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"}]
暂无答案!
目前还没有任何答案,快来回答吧!