다음을 통해 공유


arrow_udtf

PyArrow 네이티브 UDTF(사용자 정의 테이블 함수)를 만듭니다. 이 함수는 UDTF에 대한 PyArrow 네이티브 인터페이스를 제공합니다. 여기서 eval 메서드는 PyArrow RecordBatches 또는 배열을 수신하고 PyArrow 테이블 또는 RecordBatches의 반복기를 반환합니다. 이렇게 하면 행 단위 처리 오버헤드 없이 실제 벡터화된 계산을 수행할 수 있습니다.

문법

from pyspark.databricks.sql import functions as dbf

@dbf.arrow_udtf(returnType=<returnType>)
class MyUDTF:
    def eval(self, ...):
        ...

매개 변수

매개 변수 유형 Description
cls class선택적 Python 사용자 정의 테이블 함수 처리기 클래스입니다.
returnType pyspark.sql.types.StructType 또는 str, 선택 사항 사용자 정의 테이블 함수의 반환 형식입니다. 값은 StructType 개체 또는 DDL 형식 구조체 형식 문자열일 수 있습니다.

예시

PyArrow RecordBatch 입력이 있는 UDTF:

import pyarrow as pa
from pyspark.databricks.sql.functions import arrow_udtf

@arrow_udtf(returnType="x int, y int")
class MyUDTF:
    def eval(self, batch: pa.RecordBatch):
        # Process the entire batch vectorized
        x_array = batch.column('x')
        y_array = batch.column('y')
        result_table = pa.table({
            'x': x_array,
            'y': y_array
        })
        yield result_table

df = spark.range(10).selectExpr("id as x", "id as y")
MyUDTF(df.asTable()).show()

PyArrow 배열 입력이 있는 UDTF:

@arrow_udtf(returnType="x int, y int")
class MyUDTF2:
    def eval(self, x: pa.Array, y: pa.Array):
        # Process arrays vectorized
        result_table = pa.table({
            'x': x,
            'y': y
        })
        yield result_table

MyUDTF2(lit(1), lit(2)).show()

비고

  • eval 메서드는 PyArrow RecordBatches 또는 배열을 입력으로 수락해야 합니다.
  • eval 메서드는 PyArrow 테이블 또는 RecordBatches를 출력으로 생성해야 합니다.