Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks Runtime 16.0 dan versi yang lebih baru
Menghasilkan nilai struktur dengan avroBin dan jsonSchemaStr.
Sintaks
from_avro(avroBin, jsonSchemaStr, options )
Argumen
-
avroBinBINARY: Ekspresi yang menentukan baris data Avro. -
avroSchemaSpec: Skema target dalam format JSON. Ini harus cocok dengan skema yang dikodekan dalamavroBinseperti yang ditentukan dalam to_avro(). -
options:MAP<STRING,STRING>harfiah yang menentukan arahan.
Pengembalian Barang
STRUCT dengan nama dan jenis bidang berdasarkan hasil schema_of_json(jsonStr).
avroBin harus terbentuk dengan baik dalam kaitannya dengan avroSchemaSpec dan options atau Databricks mengeluarkan pengecualian.
Opsi
| Opsi | Nilai | Deskripsi |
|---|---|---|
mode |
FAILFAST, PERMISSIVE |
Mode penanganan kesalahan. Standar: FAILFAST. Dalam PERMISSIVE mode, rekaman yang rusak diatur ke NULL alih-alih meningkatkan kesalahan. |
compression |
uncompressed, , snappydeflate, bzip2, , xz,zstandard |
Kodek kompresi untuk mengodekan data Avro. |
avroSchemaEvolutionMode |
none, restart |
Mode evolusi skema. Standar: none. Saat diatur ke restart, kueri melempar UnknownFieldException saat skema berubah. Mulai ulang pekerjaan untuk menggunakan skema baru. Lihat Menggunakan mode evolusi skema dengan from_avro. |
recursiveFieldMaxDepth |
Rentang: -1 ke 15 |
Kedalaman rekursi maksimum di sepanjang satu jalur rekursif. Default: -1, yang tidak membatasi kedalaman rekursi.Ketika jenis bersama dapat dijangkau dari banyak jalur skema yang berbeda, ekspansi skema dapat menyebabkan driver kehabisan memori karena opsi ini mengikat kedalaman pada satu jalur saja. Untuk solusinya:
|
Contoh
> 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}