У меня есть файлы AVRO, сохраненные в HDFS, загруженные с помощью Kafka Connect HDFS Sink.
Это часть записи реестра схемы:
{
"name": "TAX_RATE",
"type": ["null", {
"type": "bytes",
"scale": 127,
"precision": 64,
"connect.version": 1,
"connect.parameters": {
"scale": "127"
},
"connect.name": "org.apache.kafka.connect.data.Decimal",
"logicalType": "decimal"
}],
"default": null
}, .....,
}
Когда я создаю DataFrame, читая эти файлы , Столбец «TAX_RATE» читается как двоичный столбец.
Теперь я хочу преобразовать двоичные поля в тип, определенный в поле метаданных «логического типа».
Для этого Я хочу использовать метаданные AVRO.
Но когда я пытаюсь прочитать метаданные из схемы DataFrame, он становится пустым.
val incr_df = spark
.read
.format("avro")
.load("/tmp/ash/binaryToDecimal/partition=2020-04-22-01")
incr_df.printSchema
incr_df.schema.fields.map(f=> f.metadata)
Вывод:
res7 : Array [org. apache .spark. sql .types.Metadata] = Array ({}, {}, {}, {}, {}, {}, {}, {}, {}, { }, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} , {}, {}, {})
Есть ли способ или настройка, чтобы я мог читать метаданные AVRO из схемы DataFrame?