from_avro
函式
適用於: 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
或 Databricks 相關的options
格式必須良好,就會引發例外狀況。
備註
以下是最常見的支持選項:
選項 | 值 | Description |
---|---|---|
'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}