Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks Runtime 16.0 en hoger
Retourneert een struct-waarde met de avroBin en jsonSchemaStr.
Syntaxis
from_avro(avroBin, jsonSchemaStr, options )
Argumenten
-
avroBin: EenBINARYexpressie die een rij met Avro-gegevens opgeeft. -
avroSchemaSpec: Het doelschema in JSON-indeling. Het moet overeenkomen met het schema dat inavroBinis gecodeerd zoals opgegeven in to_avro(). -
options: eenMAP<STRING,STRING>letterlijke vermelding van instructies.
Retouren
Een STRUCT met veldnamen en -typen op basis van het resultaat van schema_of_json(jsonStr).
avroBin moet goed zijn gevormd met betrekking tot de avroSchemaSpec en options of Databricks genereert een uitzondering.
Opties
| Optie | Waarden | Beschrijving |
|---|---|---|
mode |
FAILFAST, PERMISSIVE |
Foutafhandelingsmodus. Standaard: FAILFAST. In PERMISSIVE de modus worden beschadigde records ingesteld op NULL in plaats van een fout op te geven. |
compression |
uncompressed, , snappydeflate, bzip2, , , xzzstandard |
Compressiecodec voor het coderen van Avro-gegevens. |
avroSchemaEvolutionMode |
none, restart |
De evolutiemodus van het schema. Standaard: none. Als deze is ingesteld restartop, genereert de query een UnknownFieldException wanneer het schema wordt gewijzigd. Start de taak opnieuw op om het nieuwe schema te gebruiken. Zie De modus Schemaontwikkeling gebruiken met from_avro. |
recursiveFieldMaxDepth |
Bereik: -1 tot 15 |
Maximale recursiediepte langs één recursief pad. Standaard: -1, waarmee de recursiediepte niet wordt beperkt.Wanneer een gedeeld type bereikbaar is vanaf veel verschillende schemapaden, kan de schema-uitbreiding ertoe leiden dat het stuurprogramma onvoldoende geheugen heeft omdat deze optie alleen diepte voor één pad begrenst. Tijdelijke oplossing:
|
Voorbeelden
> 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}