de_avro
Converte uma coluna binária no formato Avro em seu valor catalisador correspondente. O esquema especificado deve corresponder aos dados lidos; caso contrário, o comportamento é indefinido: pode falhar ou retornar um resultado arbitrário.
Se jsonFormatSchema não for fornecido, mas ambos subject e schemaRegistryAddress forem fornecidos, a função converte uma coluna binária do formato Avro do Schema Registry em seu valor catalisador correspondente.
Sintaxe
from pyspark.sql.avro.functions import from_avro
from_avro(data, jsonFormatSchema=None, options=None, subject=None, schemaRegistryAddress=None)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| A coluna binária contendo dados codificados em Avro. |
| str, opcional | O esquema Avro em formato de strings JSON . |
| dicionário, opcional | Opções para controlar como o registro Avro é analisado e configuração para o cliente de registro de esquema. |
| str, opcional | O assunto no Registro de Esquemas ao qual os dados pertencem. |
| str, opcional | O endereço (host e porta) do Registro de Esquemas. |
Opções
Opção | Valores | Descrição |
|---|---|---|
|
| Modo de tratamento de erros. padrão: |
|
| Codec de compressão para codificação de dados Avro. |
|
| Modo de evolução do esquema. padrão: |
| Intervalo: | Profundidade máxima de recursão ao longo de um único caminho recursivo. padrão: Quando um tipo compartilhado é acessível a partir de vários caminhos de esquema distintos, a expansão de esquema pode fazer com que o driver fique sem memória, pois essa opção limita a profundidade a apenas um caminho. Para contornar o problema:
|
Devoluções
pyspark.sql.ColumnUma nova coluna contendo os dados Avro desserializados como o valor do catalisador correspondente.
Exemplos
Exemplo 1 : Desserializando uma coluna binária Avro usando um esquema JSON
from pyspark.sql import Row
from pyspark.sql.avro.functions import from_avro, to_avro
data = [(1, Row(age=2, name='Alice'))]
df = spark.createDataFrame(data, ("key", "value"))
avro_df = df.select(to_avro(df.value).alias("avro"))
json_format_schema = '''{"type":"record","name":"topLevelRecord","fields":
[{"name":"avro","type":[{"type":"record","name":"value",
"namespace":"topLevelRecord","fields":[{"name":"age","type":["long","null"]},
{"name":"name","type":["string","null"]}]},"null"]}]}'''
avro_df.select(from_avro(avro_df.avro, json_format_schema).alias("value")).show(truncate=False)
+------------------+
|value |
+------------------+
|{{2, Alice}} |
+------------------+