Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция
Область применения: Databricks Runtime 16.0 и более поздней версии
Возвращает значение структуры с использованием avroBin
и jsonSchemaStr
.
Синтаксис
from_avro(avroBin, jsonSchemaStr, options )
Аргументы
-
avroBin
BINARY
: выражение, указывающее строку данных Avro. -
avroSchemaSpec
: целевая схема в формате JSON. Он должен соответствовать схеме, закодированной вavroBin
, как указано в to_avro(). -
options
: литералMAP<STRING,STRING>
, задающий директивы.
Возвраты
Объект STRUCT
с именами полей и типами, основанными на результате schema_of_json(jsonStr).
avroBin
должен быть корректно сформирован в отношении avroSchemaSpec
и options
, иначе Databricks выдаст исключение.
Примечания.
Указаны наиболее часто поддерживаемые варианты:
Вариант | значение | Описание |
---|---|---|
'mode' |
'PERMISSIVE' , 'FAILFAST' |
В режиме PERMISSIVE все поврежденные объекты или поля в объекте устанавливаются в NULL вместо генерации ошибки. |
compression |
'uncompressed' , 'snappy' , 'deflade , 'bzip2' , 'xz' , 'zstandard' |
Задает кодек сжатия, используемый для кодирования данных Avro. |
Дополнительные сведения см. в разделе "Чтение и запись потоковых данных Avro".
Примеры
> SELECT from_avro(to_avro(5), '{ "type" : "int" }', NULL:MAP<STRING, STRING>);
5
> SELECT from_avro(to_avro(5, '{ "type" : "int" }'), '{ "type" : "int" }', NULL:MAP<STRING, STRING>);
5
> SELECT from_avro(to_avro(named_struct('num', 5, 'txt', 'hello')), '{ "type" : "record", "name": "my_record", "fields": [{ "name": "num", "type": "int"}, { "name": "txt", "type": "string"}]}', NULL:MAP<STRING, STRING>);
{"num":5,"txt":"hello"}
> SELECT from_avro(to_avro(named_struct('num', 5, 'txt', 'hello')),
'{ "type" : "record", "name": "my_record", "fields": [{ "name": "num", "type": "int"}, { "name": "txt", "type": "double"}]}',
map('mode', 'failfast'));
Error: Avro data is not valid for the specified schema.
> SELECT from_avro(to_avro(named_struct('num', 5, 'txt', 'hello')),
'{ "type" : "record", "name": "my_record", "fields": [{ "name": "num", "type": "int"}, { "name": "txt", "type": "double"}]}',
map('mode', 'permissive'));
{"num":null,"txt":null}