Snowpark Connect for Spark 속성

|spconnect|는 표준 Spark와 유사한 방식으로 사용자 지정 구성을 지원합니다. 키-값 페어를 사용하여 세션의 set 메서드를 통해서만 구성 속성을 수정할 수 있습니다. |spconnect|는 실행에 영향을 미치는 제한된 속성 세트만 인식합니다. 지원되지 않는 속성은 예외를 발생시키지 않고 자동으로 무시됩니다.

지원되는 Spark 속성

|spconnect|는 Spark 속성의 하위 세트를 지원합니다.

속성 이름

기본값

의미

해당 버전부터

spark.app.name

(없음)

쿼리 추적을 위해 Snowflake query_tag`(:code:`Spark-Connect-App-Name={name})로 설정된 애플리케이션 이름입니다.

1.0.0

spark.Catalog.databaseFilterInformationSchema

false

:code:`true`인 경우 카탈로그 작업의 데이터베이스 목록에서 :code:`INFORMATION_SCHEMA`를 필터링합니다.

1.0.0

spark.hadoop.fs.s3a.access.key

(없음)

S3 위치를 읽거나 쓸 때 S3 인증을 위한 AWS 액세스 키 ID입니다.

1.0.0

spark.hadoop.fs.s3a.assumed.role.arn

(없음)

역할 기반 인증을 사용할 때 S3 액세스 권한이 있는 AWS IAM역할 ARN입니다.

1.0.0

spark.hadoop.fs.s3a.secret.key

(없음)

S3 위치를 읽거나 쓸 때 S3 인증을 위한 AWS 시크릿 액세스 키입니다.

1.0.0

spark.hadoop.fs.s3a.server-side-encryption.key

(없음)

AWS_SSE_KMS 암호화 유형을 사용할 때 서버 측 암호화의 AWS KMS 키 ID입니다.

1.0.0

spark.hadoop.fs.s3a.session.token

(없음)

STS를 사용할 때 임시 S3 자격 증명을 위한 AWS 세션 토큰입니다.

1.0.0

spark.sql.ansi.enabled

false

보다 엄격한 유형 검사 및 오류 처리를 위해 ANSI SQL 모드를 활성화합니다. :code:`true`인 경우 산술 오버플로 및 유효하지 않은 캐스트는 :code:`NULL`을 반환하는 대신 오류를 발생시킵니다.

1.0.0

spark.sql.caseSensitive

false

식별자의 대/소문자 구분을 제어합니다. :code:`false`인 경우 열 및 테이블 이름은 대/소문자를 구분하지 않습니다(Snowflake에서는 자동으로 대문자로 표시됨).

1.0.0

spark.sql.crossJoin.enabled

true

암시적 크로스 조인을 활성화하거나 비활성화합니다. false 및 누락되거나 사소한 조인 조건으로 인해 오류가 발생합니다.

1.0.0

spark.sql.execution.pythonUDTF.arrow.enabled

false

:code:`true`인 경우 Python UDTF 직렬화/역직렬화를 위해 Apache Arrow 최적화를 활성화합니다.

1.0.0

spark.sql.globalTempDatabase

global_temp

전역 임시 뷰의 스키마 이름입니다. 없는 경우 자동으로 생성됩니다.

1.0.0

spark.sql.legacy.allowHashOnMapType

false

:code:`true`인 경우 해싱 MAP 타입 열을 허용합니다. 기본적으로, Spark 동작과의 일관성을 위해 MAP 타입을 해시할 수 없습니다.

1.0.0

spark.sql.legacy.dataset.nameNonStructGroupingKeyAsValue

false

데이터 세트 그룹화 키 명명에 대한 레거시 동작입니다.

1.6.0

spark.sql.mapKeyDedupPolicy

EXCEPTION

맵 생성에서 중복 키가 발견될 때의 동작을 제어합니다. 값은 :code:`EXCEPTION`(오류 발생) 또는 :code:`LAST_WIN`(마지막 값 유지)입니다.

1.0.0

spark.sql.parser.quotedRegexColumnNames

false

true`인 경우 SQL 쿼리의 따옴표로 묶인 이름에서 정규식 패턴 일치를 활성화합니다(예: :code:`SELECT '(col1|col2)' FROM table).

1.0.0

spark.sql.parquet.outputTimestampType

TIMESTAMP_MILLIS

Parquet 출력 타임스탬프 유형을 제어합니다. TIMESTAMP_MILLIS 또는 :code:`TIMESTAMP_MICROS`를 지원합니다.

1.7.0

spark.sql.pyspark.inferNestedDictAsStruct.enabled

false

true`인 경우 DataFrame을 생성하는 동안 중첩된 Python 사전을 :code:`MapType 대신 :code:`StructType`으로 추론합니다.

1.0.0

spark.sql.pyspark.legacy.inferArrayTypeFromFirstElement.enabled

false

:code:`true`인 경우 모든 요소를 샘플링하는 대신 첫 번째 요소에서만 배열 요소 유형을 추론합니다.

1.0.0

spark.sql.repl.eagerEval.enabled

false

true`인 경우 REPL에서 즉시 평가를 활성화하여 DataFrame를 호출하지 않고 :code:`show() 결과를 자동으로 표시합니다.

1.0.0

spark.sql.repl.eagerEval.maxNumRows

20

REPL 즉시 평가 모드에서 표시할 최대 행 수입니다.

1.0.0

spark.sql.repl.eagerEval.truncate

20

잘리기 전에 REPL 즉시 평가에 표시되는 열 값의 최대 너비입니다.

1.0.0

spark.sql.session.localRelationCacheThreshold

2147483647

로컬 관계 캐싱을 위한 바이트 임계값입니다. 이 값보다 큰 관계는 성능 향상을 위해 캐시됩니다.

1.0.0

spark.sql.session.timeZone

<system_local_timezone>

타임스탬프 작업에 사용되는 세션 타임존입니다. :code:`ALTER SESSION SET TIMEZONE`을 통해 Snowflake 세션과 동기화됩니다.

1.0.0

spark.sql.sources.default

parquet

형식이 명시적으로 지정되지 않은 경우 읽기/쓰기 작업의 기본 데이터 소스 형식입니다.

1.0.0

spark.sql.timestampType

TIMESTAMP_LTZ

타임스탬프 작업의 기본 타임스탬프 유형입니다. 값은 :code:`TIMESTAMP_LTZ`(현지 타임존 포함) 또는 :code:`TIMESTAMP_NTZ`(타임존 없음)입니다.

1.0.0

spark.sql.tvf.allowMultipleTableArguments.enabled

true

:code:`true`인 경우 테이블 반환 함수가 여러 테이블 인자를 허용할 수 있습니다.

1.0.0

지원되는 Snowpark Connect for Spark 속성

|spconnect|에 특정한 사용자 지정 구성 속성입니다.

속성 이름

기본값

의미

해당 버전부터

fs.azure.sas.<container>.<account>.blob.core.windows.net

(없음)

Blob 저장소 인증을 위한 Azure SAS 토큰입니다. Azure Blob 저장소 위치를 읽거나 쓸 때 사용됩니다.

1.0.0

fs.azure.sas.fixed.token.<account>.dfs.core.windows.net

(없음)

ADLS Gen2(Data Lake Storage) 인증을 위한 Azure SAS 토큰입니다. Azure Data Lake Storage Gen2 위치를 읽거나 쓸 때 사용됩니다.

1.0.0

mapreduce.fileoutputcommitter.marksuccessfuljobs

false

true`인 경우 Hadoop/Spark 워크플로와의 호환성을 위해 쓰기 작업에 성공한 :code:`_SUCCESS 파일을 생성합니다.

1.0.0

parquet.enable.summary-metadata

false

Parquet 요약 메타데이터 파일을 생성하기 위한 대체 구성입니다. 이 속성 또는 :code:`spark.sql.parquet.enable.summary-metadata`는 해당 기능을 활성화합니다.

1.4.0

snowflake.repartition.for.writes

false

:code:`true`인 경우 작성 중에 :code:`DataFrame.repartition(n)`을 적용하여 출력을 :code:`n`으로 분할합니다. Spark 동작과 일치하지만 오버헤드가 추가됩니다.

1.0.0

snowpark.connect.cte.optimization_enabled

false

:code:`true`인 경우 쿼리 성능 향상을 위해 Snowpark 세션에서 공통 테이블 식(CTE) 최적화를 활성화합니다.

1.0.0

snowpark.connect.describe_cache_ttl_seconds

300

쿼리 캐시 항목의 TTL(초)입니다. 반복되는 스키마 조회를 줄입니다.

1.0.0

snowpark.connect.enable_snowflake_extension_behavior

false

:code:`true`인 경우 Spark 동작과 다를 수 있는 Snowflake 고유 확장 프로그램(예: MAP 유형에 대한 해시 또는 MD5 반환 유형)을 활성화합니다.

1.0.0

snowpark.connect.handleIntegralOverflow

false

:code:`true`인 경우 적분 오버플로 동작은 Spark 접근 방식에 맞춰 조정됩니다.

1.7.0

snowpark.connect.iceberg.external_volume

(없음)

Iceberg 테이블 작업을 위한 Snowflake 외부 볼륨 이름입니다.

1.0.0

snowpark.connect.integralTypesEmulation

client_default

소수점에서 정수 형식으로의 변환을 제어합니다. 값은 client_default, enabled, :code:`disabled`입니다.

1.7.0

snowpark.connect.scala.version

2.12

사용되는 Scala 버전을 제어합니다(2.12 또는 2.13).

1.7.0

snowpark.connect.sql.partition.external_table_location

(없음)

분할된 쓰기를 위한 외부 테이블 위치 경로입니다.

1.4.0

snowpark.connect.temporary.views.create_in_snowflake

false

:code:`true`인 경우 임시 뷰를 로컬에서 관리하는 대신 Snowflake에서 직접 생성합니다.

1.0.1

snowpark.connect.udf.imports [DEPRECATED 1.7.0]

(없음)

UDF 실행을 위해 가져올 파일 또는 모듈의 쉼표로 구분된 목록입니다. 변경 시 UDF 레크레이션을 트리거합니다.

1.0.0

snowpark.connect.udf.python.imports

(없음)

Python UDF 실행을 위해 가져올 파일/모듈의 쉼표로 구분된 목록입니다. 변경 시 UDF 레크레이션을 트리거합니다.

1.7.0

snowpark.connect.udf.java.imports

(없음)

Java UDF 실행을 위해 가져올 파일 또는 모듈의 쉼표로 구분된 목록입니다. 변경 시 UDF 레크레이션을 트리거합니다.

1.7.0

snowpark.connect.udf.packages

(없음)

UDFs를 등록할 때 포함할 Python 패키지의 쉼표로 구분된 목록입니다.

1.0.0

snowpark.connect.udtf.compatibility_mode

false

:code:`true`인 경우 Spark UDTF 의미 체계와의 호환성 향상을 Spark 호환 가능 UDTF 동작을 활성화합니다.

1.0.0

snowpark.connect.version

<current_version>

읽기 전용입니다. 현재 Snowpark Connect for Spark 버전을 반환합니다.

1.0.0

snowpark.connect.views.duplicate_column_names_handling_mode

rename

뷰에서 중복된 열 이름을 처리하는 방법입니다. 값은 :code:`rename`(접미사 추가) :code:`fail`(오류 발생) 또는 :code:`drop`(중복 제거)입니다.

1.0.0

spark.sql.parquet.enable.summary-metadata

false

true`인 경우 Parquet 작성 중에 Parquet 요약 메타데이터 파일(:code:`_metadata_common_metadata)을 생성합니다.

1.4.0

fs.azure.sas.<container>.<account>.blob.core.windows.net

Blob 저장소 인증을 위한 Azure SAS 토큰을 지정합니다. Azure Blob 저장소 위치를 읽거나 쓸 때 사용됩니다.

기본값: (없음)

해당 버전부터: 1.0.0

fs.azure.sas.fixed.token.<account>.dfs.core.windows.net

ADLS Gen2(Data Lake Storage) 인증을 위한 Azure SAS 토큰을 지정합니다. Azure Data Lake Storage Gen2 위치를 읽거나 쓸 때 사용됩니다.

기본값: (없음)

해당 버전부터: 1.0.0

mapreduce.fileoutputcommitter.marksuccessfuljobs

Hadoop/Spark 워크플로와의 호환성을 위해 쓰기 작업에 성공한 후 _SUCCESS 파일을 생성하려면 :code:`true`를 지정합니다.

기본값: false

해당 버전부터: 1.0.0

parquet.enable.summary-metadata

Parquet 요약 메타데이터 파일을 생성하기 위한 대체 구성을 지정합니다. 이 속성 또는 :code:`spark.sql.parquet.enable.summary-metadata`를 사용하여 해당 기능을 활성화합니다.

기본값: false

해당 버전부터: 1.4.0

snowflake.repartition.for.writes

작성 중에 :code:`DataFrame.repartition(n)`을 적용하여 출력을 :code:`n`으로 분할하려면 :code:`true`를 지정합니다. Spark 동작과 일치하지만 오버헤드가 추가됩니다.

기본값: false

해당 버전부터: 1.0.0

snowpark.connect.cte.optimization_enabled

쿼리 성능을 위해 Snowpark 세션에서 공통 테이블 식(CTE) 최적화를 활성화하려면 :code:`true`를 지정합니다.

기본값: false

해당 버전부터: 1.0.0

주석

:doc:`Snowflake 공통 테이블 식(CTEs)</user-guide/queries-cte>`을 활성화하는 구성입니다. 이 구성은 반복적인 코드 블록이 많은 Snowflake 쿼리를 최적화합니다. 이 수정으로 쿼리 컴파일과 실행 성능이 모두 향상됩니다.

snowpark.connect.describe_cache_ttl_seconds

쿼리 캐시 항목의 TTL(초)을 지정합니다. 반복되는 스키마 조회를 줄입니다.

기본값: 300

해당 버전부터: 1.0.0

snowpark.connect.enable_snowflake_extension_behavior

Spark 동작과 다를 수 있는 Snowflake 고유 확장 프로그램(예: MAP 유형에 대한 해시 또는 MD5 반환 유형)을 활성화하려면 :code:`true`를 지정합니다.

기본값: false

해당 버전부터: 1.0.0

주석

:code:`true`로 설정하는 경우 특정 작업의 동작을 변경합니다.

  • bit_get/getbit — :doc:`Snowflake getbit 함수</sql-reference/functions/getbit>`의 명시적 사용

  • hash — :doc:`Snowflake 해시 함수</sql-reference/functions/hash>`의 명시적 사용

  • md5 — :doc:`Snowflake md5 함수</sql-reference/functions/md5>`의 명시적 사용

  • 테이블 열 이름 바꾸기 — 테이블 열을 변경할 수 있습니다.

snowpark.connect.handleIntegralOverflow

적분 오버플로 동작을 Spark 접근 방식에 맞춰 조정하려면 :code:`true`를 지정합니다.

기본값: false

해당 버전부터: 1.7.0

snowpark.connect.iceberg.external_volume

Iceberg 테이블 작업을 위한 Snowflake 외부 볼륨 이름을 지정합니다.

기본값: (없음)

해당 버전부터: 1.0.0

snowpark.connect.integralTypesEmulation

소수점을 정수 형식으로 변환하는 방법을 지정합니다. 값은 client_default, enabled, :code:`disabled`입니다.

기본값: client_default

해당 버전부터: 1.7.0

주석

기본적으로, |spconnect|는 모든 정수 유형을 Long`으로 처리합니다. 이는 :ref:`Snowflake에서 숫자가 표시되는<label-data_type_number> 방식으로 인해 발생합니다. 통합 유형 에뮬레이션을 사용하면 데이터 소스에서 읽을 때 Snowpark 유형과 Spark 유형 간의 정확한 매핑이 가능합니다.

기본 옵션인 :code:`client_default`는 스크립트가 Scala 클라이언트에서 실행될 때만 에뮬레이션을 활성화합니다. 적분 유형은 다음 전체 자릿수를 기반으로 매핑됩니다.

전체 자릿수

Spark 유형

19

LongType

10

IntegerType

5

ShortType

3

ByteType

기타

DecimalType(precision, 0)

다른 전체 자릿수가 발견되면 최종 유형이 `DecimalType`에 매핑됩니다.

snowpark.connect.scala.version

사용할 Scala 버전을 지정합니다(2.12 또는 2.13).

기본값: 2.12

해당 버전부터: 1.7.0

snowpark.connect.sql.partition.external_table_location

분할된 쓰기를 위한 외부 테이블 위치 경로를 지정합니다.

기본값: (없음)

해당 버전부터: 1.4.0

주석

제공된 디렉터리에서 분할된 파일의 정확한 하위 세트만 읽으려면 추가 구성이 필요합니다. 이 기능은 :doc:`외부 스테이지</sql-reference/sql/create-stage>`에 저장된 파일에만 사용할 수 있습니다. 읽은 파일을 정리하기 위해 |spconnect|는 :doc:`외부 테이블</sql-reference/sql/create-external-table>`을 사용합니다.

이 기능은 :code:`snowpark.connect.sql.partition.external_table_location`이 설정된 경우에 활성화됩니다. 외부 테이블이 생성될 기존 데이터베이스 및 스키마 이름을 포함해야 합니다.

외부 스테이지에 저장된 Parquet 파일을 읽으면 외부 테이블이 생성됩니다. 내부 스테이지에 있는 파일의 경우 생성되지 않습니다. 스키마를 제공하면 실행 시간이 단축되어 소스에서 스키마를 추론하는 비용이 제거됩니다.

최상의 성능을 얻으려면 :ref:`Snowflake 외부 테이블 필터링 제한 사항<label-tables_external_intro_filtering_records_in_parquet_files>`에 따라 필터링하세요.

spark.conf.set("snowpark.connect.sql.partition.external_table_location", "<database-name>.<schema-name>")

spark.read.parquet("@external-stage/example").filter(col("x") > lit(1)).show()

schema = StructType([StructField("x",IntegerType()),StructField("y",DoubleType())])

spark.read.schema(schema).parquet("@external-stage/example").filter(col("x") > lit(1)).show()
Copy

snowpark.connect.temporary.views.create_in_snowflake

임시 뷰를 로컬에서 관리하는 대신 Snowflake에서 직접 생성하려면 :code:`true`를 지정합니다.

기본값: false

해당 버전부터: 1.0.1

snowpark.connect.udf.imports [DEPRECATED 1.7.0]

UDF 실행을 위해 가져올 파일 또는 모듈의 쉼표로 구분된 목록을 지정합니다. 이 값이 변경되면 UDF 레크레이션이 트리거됩니다.

기본값: (없음)

해당 버전부터: 1.0.0

snowpark.connect.udf.python.imports

python UDF 실행을 위해 가져올 파일 또는 모듈의 쉼표로 구분된 목록을 지정합니다. 이 값이 변경되면 UDF 레크레이션이 트리거됩니다.

기본값: (없음)

해당 버전부터: 1.7.0

snowpark.connect.udf.java.imports

Java UDF 실행을 위해 가져올 파일 또는 모듈의 쉼표로 구분된 목록을 지정합니다. 변경 시 UDF 레크레이션을 트리거합니다.

기본값: (없음)

해당 버전부터: 1.7.0

주석

이 구성은 :code:`snowpark.connect.udf.python.imports`와 매우 유사하게 작동합니다. 이를 통해 `registerJavaFunction<https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.UDFRegistration.registerJavaFunction.html>`_을 사용하여 생성된 Java UDFs용 외부 라이브러리 및 파일을 지정할 수 있습니다. 불필요한 종속성 혼합을 방지하기 위해 구성은 상호 배타적입니다.

외부 라이브러리 및 파일을 포함하려면 파일에 대한 스테이지 경로를 구성 설정 :code:`snowpark.connect.udf.java.imports`의 값으로 제공합니다. 구성 값은 파일에 대한 스테이지 경로의 배열이어야 하며, 경로는 쉼표로 구분됩니다.

다음 예제의 코드에는 UDF의 실행 컨텍스트에 두 개의 파일이 포함되어 있습니다. UDF는 이러한 파일에서 함수를 가져와 논리에서 사용합니다.

# Files need to be previously staged

spark.conf.set("snowpark.connect.udf.java.imports", "[@stage/library.jar]")

spark.registerJavaFunction("javaFunction", "com.example.ExampleFunction")

spark.sql("SELECT javaFunction('arg')").show()
Copy

snowpark.connect.udf.java.imports 설정을 사용하여 코드에서 읽어야 하는 데이터가 있는 파일과 같은 다른 종류의 파일도 포함할 수 있습니다. 이 작업을 수행할 때 코드는 포함된 파일에서만 읽어야 합니다. 함수 실행이 종료되면 이러한 파일에 대한 모든 쓰기가 손실됩니다.

snowpark.connect.udf.packages

UDFs를 등록할 때 포함할 Python 패키지의 쉼표로 구분된 목록을 지정합니다.

기본값: (없음)

해당 버전부터: 1.0.0

주석

이를 사용하여 Python UDFs에서 사용할 수 있는 추가 패키지를 정의할 수 있습니다. 값은 쉼표로 구분된 종속성 목록입니다.

Snowflake에서 다음 SQL을 실행하여 지원되는 패키지 목록을 검색할 수 있습니다.

SELECT * FROM INFORMATION_SCHEMA.PACKAGES WHERE LANGUAGE = 'python';
Copy
spark.conf.set("snowpark.connect.udf.packages", "[numpy]")

@udtf(returnType="val: int")

class Powers:

  def eval(self, x: int):
      import numpy as np

      for v in np.power(np.array([x, x, x]), [0, 1, 2]):
          yield (int(v),)

spark.udtf.register(name="powers", f=Powers)

spark.sql("SELECT * FROM powers(10)").show()
Copy

자세한 내용은 Python 섹션을 참조하십시오.

snowpark.connect.udtf.compatibility_mode

Spark UDTF 의미 체계와의 호환성 향상을 Spark 호환 가능 UDTF 동작을 활성화하려면 :code:`true`를 지정합니다.

기본값: false

해당 버전부터: 1.0.0

주석

이 속성은 UDTFs가 Spark 호환 가능 동작을 사용할지 또는 기본 Snowpark 동작을 사용할지 여부를 결정합니다. :code:`true`로 설정하는 경우 Spark의 출력 유형 강제 변환 및 오류 처리 패턴을 모방하는 호환성 래퍼를 적용합니다.

활성화되는 경우 UDTFs는 Spark 스타일 자동 형식 강제 변환(예: 문자열 “true”을 부울로, 부울을 정수로) 및 오류 처리를 적용하는 호환성 래퍼를 사용합니다. 또한 래퍼는 위치 및 명명된 액세스 모두에 대해 테이블 인자를 행과 유사한 오브젝트로 변환하고 Spark의 동작 패턴과 일치하는 SQL null 값을 제대로 처리합니다.

snowpark.connect.version

현재 Snowpark Connect for Spark 버전을 반환합니다. 읽기 전용입니다.

기본값: <current_version>

해당 버전부터: 1.0.0

snowpark.connect.views.duplicate_column_names_handling_mode

뷰에서 중복된 열 이름을 처리하는 방법을 지정합니다. 허용되는 값에는 :code:`rename`(접미사 추가) :code:`fail`(오류 발생) 또는 :code:`drop`(중복 제거)이 포함됩니다.

기본값: rename

해당 버전부터: 1.0.0

주석

Snowflake는 중복 열 이름을 지원하지 않습니다.

다음 코드는 “duplicate column name ‘foo’” 같은 SQL 컴파일 오류와 함께 뷰 생성 단계에서 실패합니다.

df = spark.createDataFrame([
(1, 1),
(2, 2)
], ["foo", "foo"])

df.show() # works

df.createTempView("df_view") # Fails with SQL compilation error: duplicate column name 'foo'
Copy

이 문제를 해결하려면 다음 값 중 하나로 snowpark.connect.views.duplicate_column_names_handling_mode 구성 옵션을 설정합니다.

  • rename: 첫 번째 열 이름 뒤에 있는 모든 중복 열 이름에 _dedup_1, _dedup_2 등의 접미사가 추가됩니다.

  • drop: 한 가지를 제외한 모든 중복 열이 삭제됩니다. 열의 값이 다르면 잘못된 결과가 발생할 수 있습니다.

snowpark.connect.udf.java.imports

Java UDF 실행을 위해 가져올 파일 또는 모듈의 쉼표로 구분된 목록을 지정합니다. 변경 시 UDF 레크레이션을 트리거합니다.

기본값: (없음)

해당 버전부터: 1.7.0

주석

이 구성은 :code:`snowpark.connect.udf.python.imports`와 매우 유사하게 작동합니다. 이를 사용하여 `registerJavaFunction<https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.UDFRegistration.registerJavaFunction.html>`_을 통해 생성된 Java UDFs용 외부 라이브러리 및 파일을 지정할 수 있습니다. 불필요한 종속성 혼합을 방지하기 위해 구성은 상호 배타적입니다.

외부 라이브러리 및 파일을 포함하려면 파일에 대한 스테이지 경로를 구성 설정 :code:`snowpark.connect.udf.java.imports`의 값으로 제공합니다. 값은 파일에 대한 스테이지 경로의 배열이며, 경로는 쉼표로 구분됩니다.

다음 예제의 코드에는 UDF의 실행 컨텍스트에 두 개의 파일이 포함되어 있습니다. UDF는 이러한 파일에서 함수를 가져와 논리에서 사용합니다.

# Files need to be previously staged

spark.conf.set("snowpark.connect.udf.java.imports", "[@stage/library.jar]")

spark.registerJavaFunction("javaFunction", "com.example.ExampleFunction")

spark.sql("SELECT javaFunction('arg')").show()
Copy

snowpark.connect.udf.java.imports 설정을 사용하여 코드에서 읽어야 하는 데이터가 있는 파일과 같은 다른 종류의 파일도 포함할 수 있습니다. 이 작업을 수행할 때 코드는 포함된 파일에서만 읽어야 합니다. 함수 실행이 종료되면 이러한 파일에 대한 모든 쓰기가 손실됩니다.

snowpark.connect.udf.packages

UDFs를 등록할 때 포함할 Python 패키지의 쉼표로 구분된 목록을 지정합니다.

기본값: (없음)

해당 버전부터: 1.0.0

주석

구성을 통해 Python UDFs에서 사용 가능한 추가 패키지를 정의할 수 있습니다. 값은 쉼표로 구분된 종속성 목록입니다.

Snowflake에서 다음 SQL을 실행하여 지원되는 패키지 목록을 검색할 수 있습니다.

SELECT * FROM INFORMATION_SCHEMA.PACKAGES WHERE LANGUAGE = 'python';
Copy
spark.conf.set("snowpark.connect.udf.packages", "[numpy]")

@udtf(returnType="val: int")

class Powers:

  def eval(self, x: int):
      import numpy as np

      for v in np.power(np.array([x, x, x]), [0, 1, 2]):
          yield (int(v),)

spark.udtf.register(name="powers", f=Powers)

spark.sql("SELECT * FROM powers(10)").show()
Copy

참조: 패키지 참조

snowpark.connect.udtf.compatibility_mode

Spark UDTF 의미 체계와의 호환성 향상을 Spark 호환 가능 UDTF 동작을 활성화하려면 :code:`true`를 지정합니다.

기본값: false

해당 버전부터: 1.0.0

주석

이 구성은 UDTFs가 Spark 호환 가능 동작을 사용할지 또는 기본 Snowpark 동작을 사용할지 여부를 결정합니다. :code:`true`가 활성화되는 경우 Spark의 출력 유형 강제 변환 및 오류 처리 패턴을 모방하는 호환성 래퍼를 적용합니다.

활성화되는 경우 UDTFs는 Spark 스타일 자동 형식 강제 변환(예: 문자열 “true”을 부울로, 부울을 정수로) 및 오류 처리를 적용하는 호환성 래퍼를 사용합니다. 또한 래퍼는 위치 및 명명된 액세스 모두에 대해 테이블 인자를 행과 유사한 오브젝트로 변환하고 Spark의 동작 패턴과 일치하는 SQL null 값을 제대로 처리합니다.