Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks Runtime 16.0 und höher
Gibt einen Strukturwert mit avroBin und jsonSchemaStr zurück.
Syntax
from_avro(avroBin, jsonSchemaStr, options )
Argumente
-
avroBin: EinBINARYAusdruck, der eine Zeile mit Avro-Daten angibt. -
avroSchemaSpec: Das Zielschema im JSON-Format. Es muss mit dem in to_avro()avroBinSchema übereinstimmen. -
options: EinMAP<STRING,STRING>-Literal, der Direktiven angibt.
Gibt zurück
A STRUCT mit Feldnamen und Typen basierend auf dem Ergebnis von schema_of_json(jsonStr).
avroBin muss in Bezug auf die avroSchemaSpec und oder options Databricks wohlgeformt sein, löst eine Ausnahme aus.
Optionen
| Auswahlmöglichkeit | Werte | Beschreibung |
|---|---|---|
mode |
FAILFAST, PERMISSIVE |
Fehlerbehandlungsmodus. Standardwert: FAILFAST. Im PERMISSIVE Modus werden beschädigte Datensätze anstelle eines Fehlers festgelegt NULL . |
compression |
uncompressed, , snappydeflate, bzip2, , xzzstandard |
Komprimierungscodec zum Codieren von Avro-Daten. |
avroSchemaEvolutionMode |
none, restart |
Schemaentwicklungsmodus. Standardwert: none. Bei Festlegung auf restartwird eine UnknownFieldException Abfrage ausgelöst, wenn sich das Schema ändert. Starten Sie den Auftrag neu, um das neue Schema zu verwenden. Siehe Verwenden des Schemaentwicklungsmodus mit from_avro. |
recursiveFieldMaxDepth |
Bereich: -1 bis 15 |
Maximale Rekursionstiefe entlang eines einzelnen rekursiven Pfads. Standard: -1, wodurch die Rekursionstiefe nicht eingeschränkt wird.Wenn ein freigegebener Typ aus vielen unterschiedlichen Schemapfaden erreichbar ist, kann die Schemaerweiterung dazu führen, dass der Treiber nicht genügend Arbeitsspeicher hat, da diese Option nur eine Tiefe auf einem Pfad begrenzt. So umgehen Sie Folgendes:
|
Beispiele
> 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}