Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Funkce
Platí pro:
Databricks Runtime 16.0 a vyšší
Vrátí hodnotu struktury s hodnotou avroBin a jsonSchemaStr.
Syntaxe
from_avro(avroBin, jsonSchemaStr, options )
Argumenty
-
avroBin: VýrazBINARYurčující řádek dat Avro. -
avroSchemaSpec: Cílové schéma ve formátu JSON. Musí odpovídat schématu zakódovanému v, jak je uvedeno v to_avro(). -
options: LiterálMAP<STRING,STRING>určující direktivy.
Návraty
A STRUCT s názvy a typy polí na základě výsledku schema_of_json(jsonStr).
avroBin musí být ve správném formátu s ohledem na avroSchemaSpec a options, jinak Databricks vyvolá výjimku.
Možnosti
Úplný seznam možností najdete v tématu Avro.
| Možnost | Hodnoty | Popis |
|---|---|---|
mode |
FAILFAST, PERMISSIVE |
Režim zpracování chyb Výchozí hodnota: FAILFAST. V PERMISSIVE režimu jsou poškozené záznamy nastavené na NULL místo vyvolání chyby. |
compression |
uncompressed, snappy, deflate, bzip2, , xzzstandard |
Komprese kodeku pro kódování dat Avro |
avroSchemaEvolutionMode |
none, restart |
Režim vývoje schématu Výchozí hodnota: none. Pokud je nastavená hodnota restart, dotaz vyvolá UnknownFieldException při změně schématu. Restartujte úlohu, aby se použilo nové schéma. Viz Použití režimu vývoje schématu s from_avro. |
recursiveFieldMaxDepth |
Rozsah: -1 do 15 |
Maximální hloubka rekurze podél jedné rekurzivní cesty. Výchozí hodnota: -1, která neomezuje rekurzivní hloubku.Pokud je sdílený typ dostupný z mnoha různých cest schématu, rozšíření schématu může způsobit nedostatek paměti ovladače, protože tato možnost je vázaná pouze na jednu cestu. Alternativní řešení:
|
Příklady
> 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}