Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Função
Aplica-se a:
Databricks Runtime 16.0 e versões posteriores
Retorna um valor struct com o avroBin e jsonSchemaStr.
Sintaxe
from_avro(avroBin, jsonSchemaStr, options )
Argumentos
-
avroBin: UmaBINARYexpressão que especifica uma linha de dados Avro. -
avroSchemaSpec: O esquema de destino no formato JSON. Deve corresponder ao esquema codificado emavroBinconforme especificado em to_avro(). -
options: UmMAP<STRING,STRING>literal especificando diretivas.
Devoluções
A STRUCT com nomes e tipos de campo com base no resultado de schema_of_json(jsonStr).
avroBin deve estar bem formado com relação ao avroSchemaSpec e options ou o Databricks lançará uma exceção.
Opções
Para uma lista completa de opções, veja Avro.
| Opção | Valores | Descrição |
|---|---|---|
mode |
FAILFAST, PERMISSIVE |
Modo de tratamento de erros. Padrão: FAILFAST. No PERMISSIVE modo, os registos corrompidos são definidos como NULL em vez de gerar um erro. |
compression |
uncompressed, snappy, deflate, bzip2, xz, zstandard |
Codec de compressão para codificar dados Avro. |
avroSchemaEvolutionMode |
none, restart |
Modo de evolução do esquema. Padrão: none. Quando definido para restart, a consulta lança um UnknownFieldException quando o esquema muda. Reinicia o trabalho para usar o novo esquema. Veja Usar o modo de evolução de esquema com from_avro. |
recursiveFieldMaxDepth |
Alcance: -1 até 15 |
Profundidade máxima de recursão ao longo de um único caminho recursivo. Padrão: -1, que não limita a profundidade de recursão.Quando um tipo partilhado é acessível a partir de muitos caminhos de esquema distintos, a expansão do esquema pode fazer com que o driver fique sem memória porque esta opção limita a profundidade apenas num caminho. Para contornar:
|
Exemplos
> 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}