Snowpark Connect for Spark 속성¶
|spconnect|는 표준 Spark와 유사한 방식으로 사용자 지정 구성을 지원합니다. 키-값 페어를 사용하여 세션의 set 메서드를 통해서만 구성 속성을 수정할 수 있습니다. |spconnect|는 실행에 영향을 미치는 제한된 속성 세트만 인식합니다. 지원되지 않는 속성은 예외를 발생시키지 않고 자동으로 무시됩니다.
지원되는 Spark 속성¶
|spconnect|는 Spark 속성의 하위 세트를 지원합니다.
속성 이름 |
기본값 |
의미 |
해당 버전부터 |
|---|---|---|---|
|
(없음) |
쿼리 추적을 위해 Snowflake |
1.0.0 |
|
|
:code:`true`인 경우 카탈로그 작업의 데이터베이스 목록에서 :code:`INFORMATION_SCHEMA`를 필터링합니다. |
1.0.0 |
|
(없음) |
S3 위치를 읽거나 쓸 때 S3 인증을 위한 AWS 액세스 키 ID입니다. |
1.0.0 |
|
(없음) |
역할 기반 인증을 사용할 때 S3 액세스 권한이 있는 AWS IAM역할 ARN입니다. |
1.0.0 |
|
(없음) |
S3 위치를 읽거나 쓸 때 S3 인증을 위한 AWS 시크릿 액세스 키입니다. |
1.0.0 |
|
(없음) |
|
1.0.0 |
|
(없음) |
STS를 사용할 때 임시 S3 자격 증명을 위한 AWS 세션 토큰입니다. |
1.0.0 |
|
|
보다 엄격한 유형 검사 및 오류 처리를 위해 ANSI SQL 모드를 활성화합니다. :code:`true`인 경우 산술 오버플로 및 유효하지 않은 캐스트는 :code:`NULL`을 반환하는 대신 오류를 발생시킵니다. |
1.0.0 |
|
|
식별자의 대/소문자 구분을 제어합니다. :code:`false`인 경우 열 및 테이블 이름은 대/소문자를 구분하지 않습니다(Snowflake에서는 자동으로 대문자로 표시됨). |
1.0.0 |
|
|
암시적 크로스 조인을 활성화하거나 비활성화합니다. |
1.0.0 |
|
|
:code:`true`인 경우 Python UDTF 직렬화/역직렬화를 위해 Apache Arrow 최적화를 활성화합니다. |
1.0.0 |
|
|
전역 임시 뷰의 스키마 이름입니다. 없는 경우 자동으로 생성됩니다. |
1.0.0 |
|
|
:code:`true`인 경우 해싱 MAP 타입 열을 허용합니다. 기본적으로, Spark 동작과의 일관성을 위해 MAP 타입을 해시할 수 없습니다. |
1.0.0 |
|
|
데이터 세트 그룹화 키 명명에 대한 레거시 동작입니다. |
1.6.0 |
|
|
맵 생성에서 중복 키가 발견될 때의 동작을 제어합니다. 값은 :code:`EXCEPTION`(오류 발생) 또는 :code:`LAST_WIN`(마지막 값 유지)입니다. |
1.0.0 |
|
|
|
1.0.0 |
|
|
Parquet 출력 타임스탬프 유형을 제어합니다. |
1.7.0 |
|
|
|
1.0.0 |
|
|
:code:`true`인 경우 모든 요소를 샘플링하는 대신 첫 번째 요소에서만 배열 요소 유형을 추론합니다. |
1.0.0 |
|
|
|
1.0.0 |
|
|
REPL 즉시 평가 모드에서 표시할 최대 행 수입니다. |
1.0.0 |
|
|
잘리기 전에 REPL 즉시 평가에 표시되는 열 값의 최대 너비입니다. |
1.0.0 |
|
|
로컬 관계 캐싱을 위한 바이트 임계값입니다. 이 값보다 큰 관계는 성능 향상을 위해 캐시됩니다. |
1.0.0 |
|
|
타임스탬프 작업에 사용되는 세션 타임존입니다. :code:`ALTER SESSION SET TIMEZONE`을 통해 Snowflake 세션과 동기화됩니다. |
1.0.0 |
|
|
형식이 명시적으로 지정되지 않은 경우 읽기/쓰기 작업의 기본 데이터 소스 형식입니다. |
1.0.0 |
|
|
타임스탬프 작업의 기본 타임스탬프 유형입니다. 값은 :code:`TIMESTAMP_LTZ`(현지 타임존 포함) 또는 :code:`TIMESTAMP_NTZ`(타임존 없음)입니다. |
1.0.0 |
|
|
:code:`true`인 경우 테이블 반환 함수가 여러 테이블 인자를 허용할 수 있습니다. |
1.0.0 |
지원되는 Snowpark Connect for Spark 속성¶
|spconnect|에 특정한 사용자 지정 구성 속성입니다.
속성 이름 |
기본값 |
의미 |
해당 버전부터 |
|---|---|---|---|
|
(없음) |
Blob 저장소 인증을 위한 Azure SAS 토큰입니다. Azure Blob 저장소 위치를 읽거나 쓸 때 사용됩니다. |
1.0.0 |
|
(없음) |
ADLS Gen2(Data Lake Storage) 인증을 위한 Azure SAS 토큰입니다. Azure Data Lake Storage Gen2 위치를 읽거나 쓸 때 사용됩니다. |
1.0.0 |
|
|
|
1.0.0 |
|
|
Parquet 요약 메타데이터 파일을 생성하기 위한 대체 구성입니다. 이 속성 또는 :code:`spark.sql.parquet.enable.summary-metadata`는 해당 기능을 활성화합니다. |
1.4.0 |
|
|
:code:`true`인 경우 작성 중에 :code:`DataFrame.repartition(n)`을 적용하여 출력을 :code:`n`으로 분할합니다. Spark 동작과 일치하지만 오버헤드가 추가됩니다. |
1.0.0 |
|
|
:code:`true`인 경우 쿼리 성능 향상을 위해 Snowpark 세션에서 공통 테이블 식(CTE) 최적화를 활성화합니다. |
1.0.0 |
|
|
쿼리 캐시 항목의 TTL(초)입니다. 반복되는 스키마 조회를 줄입니다. |
1.0.0 |
|
|
:code:`true`인 경우 Spark 동작과 다를 수 있는 Snowflake 고유 확장 프로그램(예: MAP 유형에 대한 해시 또는 MD5 반환 유형)을 활성화합니다. |
1.0.0 |
|
|
:code:`true`인 경우 적분 오버플로 동작은 Spark 접근 방식에 맞춰 조정됩니다. |
1.7.0 |
|
(없음) |
Iceberg 테이블 작업을 위한 Snowflake 외부 볼륨 이름입니다. |
1.0.0 |
|
|
소수점에서 정수 형식으로의 변환을 제어합니다. 값은 |
1.7.0 |
|
|
사용되는 Scala 버전을 제어합니다( |
1.7.0 |
|
(없음) |
분할된 쓰기를 위한 외부 테이블 위치 경로입니다. |
1.4.0 |
|
|
:code:`true`인 경우 임시 뷰를 로컬에서 관리하는 대신 Snowflake에서 직접 생성합니다. |
1.0.1 |
|
(없음) |
UDF 실행을 위해 가져올 파일 또는 모듈의 쉼표로 구분된 목록입니다. 변경 시 UDF 레크레이션을 트리거합니다. |
1.0.0 |
|
(없음) |
Python UDF 실행을 위해 가져올 파일/모듈의 쉼표로 구분된 목록입니다. 변경 시 UDF 레크레이션을 트리거합니다. |
1.7.0 |
|
(없음) |
Java UDF 실행을 위해 가져올 파일 또는 모듈의 쉼표로 구분된 목록입니다. 변경 시 UDF 레크레이션을 트리거합니다. |
1.7.0 |
|
(없음) |
UDFs를 등록할 때 포함할 Python 패키지의 쉼표로 구분된 목록입니다. |
1.0.0 |
|
|
:code:`true`인 경우 Spark UDTF 의미 체계와의 호환성 향상을 Spark 호환 가능 UDTF 동작을 활성화합니다. |
1.0.0 |
|
|
읽기 전용입니다. 현재 Snowpark Connect for Spark 버전을 반환합니다. |
1.0.0 |
|
|
뷰에서 중복된 열 이름을 처리하는 방법입니다. 값은 :code:`rename`(접미사 추가) :code:`fail`(오류 발생) 또는 :code:`drop`(중복 제거)입니다. |
1.0.0 |
|
|
|
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
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`로 설정하는 경우 특정 작업의 동작을 변경합니다.
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 |
|
10 |
|
5 |
|
3 |
|
기타 |
|
다른 전체 자릿수가 발견되면 최종 유형이 `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()
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()
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';
예¶
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()
자세한 내용은 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'
이 문제를 해결하려면 다음 값 중 하나로 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()
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';
예¶
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()
참조: 패키지 참조
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 값을 제대로 처리합니다.
주석¶
:doc:`Snowflake 공통 테이블 식(CTEs)</user-guide/queries-cte>`을 활성화하는 구성입니다. 이 구성은 반복적인 코드 블록이 많은 Snowflake 쿼리를 최적화합니다. 이 수정으로 쿼리 컴파일과 실행 성능이 모두 향상됩니다.