from_avro
函数
适用于: Databricks SQL Databricks Runtime 15.4 及更高版本
返回具有 avroBin
和 jsonSchemaStr
的结构值。
语法
from_avro(avroBin, jsonSchemaStr [, options] )
参数
avroBin
:指定BINARY
Avro 数据的行的表达式。avroSchemaSpec
:JSON 格式的目标架构。 它必须与 to_avro() 中指定的架构avroBin
匹配。options
:指定指令的可选MAP<STRING,STRING>
文本。
返回
STRUCT
基于 schema_of_json(jsonStr)的结果的字段名称和类型。
avroBin
必须与 Databricks 相关的 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" }');
5
> SELECT from_avro(to_avro(5, '{ "type" : "int" }'), '{ "type" : "int" }');
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"}]}');
{"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}