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