from_avro işlevi

Şunun için geçerlidir:evet olarak işaretli Databricks Runtime 16.0 ve üstü

avroBin ve jsonSchemaStr içeren bir yapı değeri döndürür.

Söz dizimi

from_avro(avroBin, jsonSchemaStr, options )

Tartışmalar

  • avroBin BINARY: Avro verilerinin satırını belirten ifade.
  • avroSchemaSpec: JSON biçiminde hedef şema. avroBin içinde belirtilen şekilde kodlanmış şemayla eşleşmelidir.
  • options: MAP<STRING,STRING> literal belirten yönergeler.

İadeler

A , schema_of_json(jsonStr) sonucuna göre alan adları ve türleri olan.

avroBin ve avroSchemaSpec açısından options iyi biçimlendirilmiş olmalıdır, aksi takdirde Databricks bir özel durum oluşturur.

Seçenekler

Seçeneklerin tam listesi için bkz. Avro.

Seçenek Değerler Açıklama
mode FAILFAST, PERMISSIVE Hata işleme modu. Varsayılan: FAILFAST. Modda PERMISSIVE , bozuk kayıtlar hata oluşturmak yerine olarak NULL ayarlanır.
compression uncompressed, snappy, deflate, , bzip2, xz, zstandard Avro verilerini kodlamak için sıkıştırma codec'i.
avroSchemaEvolutionMode none, restart Şema geliştirme modu. Varsayılan: none. olarak restartayarlandığında, şema değiştiğinde sorgu bir UnknownFieldException oluşturur. Yeni şemayı kullanmak için işi yeniden başlatın. Bkz . from_avro ile şema geliştirme modunu kullanma.
recursiveFieldMaxDepth Aralık: -115 Tek bir özyinelemeli yol boyunca en fazla özyineleme derinliği. Varsayılan: -1, özyineleme derinliğini sınırlamaz.
Paylaşılan bir türe birçok farklı şema yolundan ulaşılabilir olduğunda, bu seçenek yalnızca bir yol üzerinde derinliği sınırladığından, şema genişletme sürücünün belleğinin tükenmiş olmasına neden olabilir. Geçici çözüm olarak:

Örnekler

> 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}