from_avro

Avro 형식의 이진 열을 해당 촉매 값으로 변환합니다. 지정된 스키마는 읽기 데이터와 일치해야 합니다. 그렇지 않으면 동작이 정의되지 않습니다. 실패하거나 임의의 결과를 반환할 수 있습니다.

제공되지 않고 둘 다 jsonFormatSchemasubject 제공되는 경우 schemaRegistryAddress 함수는 스키마 레지스트리 Avro 형식의 이진 열을 해당 촉매 값으로 변환합니다.

문법

from pyspark.sql.avro.functions import from_avro

from_avro(data, jsonFormatSchema=None, options=None, subject=None, schemaRegistryAddress=None)

매개 변수

매개 변수 유형 설명
data pyspark.sql.Column 또는 str Avro로 인코딩된 데이터를 포함하는 이진 열입니다.
jsonFormatSchema str, 선택 사항 JSON 문자열 형식의 Avro 스키마입니다.
options dict, 선택 사항 Avro 레코드를 구문 분석하는 방법과 스키마 레지스트리 클라이언트에 대한 구성을 제어하는 옵션입니다.
subject str, 선택 사항 데이터가 속한 스키마 레지스트리의 주체입니다.
schemaRegistryAddress str, 선택 사항 스키마 레지스트리의 주소(호스트 및 포트)입니다.

옵션

Option 가치들 설명
mode FAILFAST, PERMISSIVE 오류 처리 모드입니다. 기본값: FAILFAST. 모드에서 PERMISSIVE 손상된 레코드는 오류를 발생시키는 NULL 대신 설정됩니다.
compression uncompressed, snappy, deflate, bzip2, xzzstandard Avro 데이터를 인코딩하기 위한 압축 코덱입니다.
avroSchemaEvolutionMode none, restart 스키마 진화 모드입니다. 기본값: none. 설정 restart하면 스키마가 변경되면 UnknownFieldException 쿼리가 throw됩니다. 작업을 다시 시작하여 새 스키마를 사용합니다. from_avro 스키마 진화 모드 사용을 참조하세요.
recursiveFieldMaxDepth 범위: -1 to 15 단일 재귀 경로를 따라 최대 재귀 깊이입니다. 기본값: -1재귀 깊이를 제한하지 않습니다.
여러 고유 스키마 경로에서 공유 형식에 연결할 수 있는 경우 스키마 확장으로 인해 드라이버의 메모리가 부족해질 수 있습니다. 이 옵션은 한 경로에만 깊이를 제한하기 때문입니다. 해결 방법:

Returns

pyspark.sql.Column: 역직렬화된 Avro 데이터를 해당 촉매 값으로 포함하는 새 열입니다.

예제

예제 1: JSON 스키마를 사용하여 Avro 이진 열 역직렬화

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