Funkcja from_avro
Dotyczy: Databricks Runtime 16.0 lub nowsze
Zwraca wartość struktury z wartościami avroBin
i jsonSchemaStr
.
Składnia
from_avro(avroBin, jsonSchemaStr [, options] )
Argumenty
-
avroBin
BINARY
: wyrażenie określające wiersz danych Avro. -
avroSchemaSpec
: schemat docelowy w formacie JSON. Musi być zgodny ze schematem zakodowanym wavroBin
formacie określonym w to_avro (). -
options
: opcjonalnyMAP<STRING,STRING>
literał określający dyrektywy.
Zwraca
Element STRUCT
z nazwami pól i typami na podstawie wyniku schema_of_json(jsonStr).
avroBin
muszą być dobrze sformułowane w odniesieniu do elementu avroSchemaSpec
i options
lub usługa Databricks zgłasza wyjątek.
Uwagi
Najczęściej obsługiwane są następujące opcje:
Opcja | Wartość | Opis |
---|---|---|
'mode' |
'PERMISSIVE' , 'FAILFAST' |
W PERMISSIVE trybie wszystkie uszkodzone obiekty lub pola w obiekcie są ustawione na NULL wartość zamiast zgłaszać błąd. |
compression |
'uncompressed' , 'snappy' , 'deflade ', 'bzip2' , , , 'xz' 'zstandard' |
Określa koder kompresji używany do kodowania danych Avro. |
Aby uzyskać więcej opcji, zobacz Odczyt i zapis danych avro przesyłania strumieniowego.
Przykłady
> 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}