Мы пытаемся создать внешнюю таблицу поверх avh-файлов eventhub-capture в azure с помощью Databricks. Но мы сталкиваемся с ошибкой ниже.
Error in SQL statement: SparkException: Cannot recognize hive type string: map<string,uniontype<bigint,double,string,binary>>
Мы следовали схеме, представленной на веб-сайте MS. Мы передаем схему в виде файла avs c.
{
"type":"record",
"name":"EventData",
"namespace":"Microsoft.ServiceBus.Messaging",
"fields":[
{"name":"SequenceNumber","type":"long"},
{"name":"Offset","type":"string"},
{"name":"EnqueuedTimeUtc","type":"string"},
{"name":"SystemProperties","type":{"type":"map","values":["long","double","string","bytes"]}},
{"name":"Properties","type":{"type":"map","values":["long","double","string","bytes"]}},
{"name":"Body","type":["null","bytes"]}
]
}
Это схема, представленная на веб-сайте MS, а также схема, которую мы получаем, когда используем опцию get-schema в jar avrotools файл. Если мы изменим схему полей SystemProperties и Properties, чтобы она стала картой записей, то таблица создается, но с ошибками, т.е. когда мы описываем таблицу, я получаю ужасное сообщение ERROR_ERROR_ERROR, как упомянуто в самих документах avro.
Я также попытался передать схему напрямую с помощью буквального параметра и передать файл avs c с помощью параметра URL. Попробовал как с разделом, так и без него. Фрагмент кода для справки.
create external table test_tbl
stored as avro
PARTITIONED BY (`dt` STRING)
location '<Folder containing the avro files>'
tblproperties('avro.schema.url' = 'full path of the avroschema.avsc')
Спасибо за помощь. Приветствия ...