Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Fonction
S’applique à : Databricks Runtime 16.0 et versions ultérieures
Retourne une valeur de struct avec avroBin
et jsonSchemaStr
.
Syntaxe
from_avro(avroBin, jsonSchemaStr, options )
Les arguments
-
avroBin
BINARY
: expression spécifiant une ligne de données Avro. -
avroSchemaSpec
: schéma cible au format JSON. Il doit correspondre au schéma encodéavroBin
comme spécifié dans to_avro(). -
options
: un littéralMAP<STRING,STRING>
qui spécifie des directives.
Retours
Avec STRUCT
des noms de champs et des types basés sur le résultat de schema_of_json(jsonStr).
avroBin
doit être bien formé en ce qui concerne l’exception avroSchemaSpec
et options
ou Databricks.
Remarques
Les options suivantes sont les plus courantes prises en charge :
Choix | Valeur | Descriptif |
---|---|---|
'mode' |
'PERMISSIVE' , 'FAILFAST' |
En PERMISSIVE mode, tous les objets ou champs endommagés d’un objet sont définis à NULL à la place d’une erreur. |
compression |
'uncompressed' , 'snappy' ' , 'deflade ', 'bzip2' , 'xz' , 'zstandard' |
Spécifie le codec de compression utilisé pour encoder les données Avro. |
Pour plus d’options, consultez Lire et écrire des données Avro en continu.
Exemples
> 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}