Snowpark Connect for Spark プロパティ¶
Snowpark Connect for Spark は標準のSparkと同様の方法でカスタム設定をサポートしています。構成プロパティは、キーと値のペアを使用してセッションの set メソッドを通じてのみ変更できます。Snowpark Connect for Spark は、実行に影響を与える限定されたプロパティセットのみを認識することに注意してください。サポートされていないプロパティは、例外を発生させずに無視されます。
サポートされているSparkプロパティ¶
Snowpark Connect for Spark は、Sparkプロパティのサブセットをサポートしています。
プロパティ名 |
デフォルト |
意味 |
以来 |
|---|---|---|---|
|
(なし) |
クエリ追跡用のアプリケーション名をSnowflake |
1.0.0 |
|
|
|
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 |
|
|
より厳密な型チェックとエラー処理のために ANSISQL モードを有効にします。 |
1.0.0 |
|
|
識別子の大文字と小文字の区別を制御します。 |
1.0.0 |
|
|
暗黙的なクロス結合を有効または無効にします。 |
1.0.0 |
|
|
|
1.0.0 |
|
|
グローバル仮ビューのスキーマ名。存在しない場合は自動的に作成されます。 |
1.0.0 |
|
|
|
1.0.0 |
|
|
データセットグループ化キーの命名時のレガシー動作。 |
1.6.0 |
|
|
マップの作成で重複したキーが見つかった場合の動作を制御します。値: :code:`EXCEPTION`(エラーを発生させる)または :code:`LAST_WIN`(最後の値を保持) |
1.0.0 |
|
|
|
1.0.0 |
|
|
Parquetの出力タイムスタンプ型を制御します。 |
1.7.0 |
|
|
|
1.0.0 |
|
|
|
1.0.0 |
|
|
|
1.0.0 |
|
|
REPL 先行評価モードに表示する行の最大数。 |
1.0.0 |
|
|
切り捨て前の REPL 先行評価表示における列値の最大幅。 |
1.0.0 |
|
|
ローカル関係をキャッシュするためのバイトしきい値。これより大きな関係は、パフォーマンスを改善させるためにキャッシュされます。 |
1.0.0 |
|
|
タイムスタンプ操作に使用されるセッションタイムゾーン。 |
1.0.0 |
|
|
形式が明示的に指定されていない場合の、読み取り/書き込み操作のデフォルトデータソース形式。 |
1.0.0 |
|
|
タイムスタンプ操作のデフォルトのタイムスタンプ型。値: :code:`TIMESTAMP_LTZ`(現地時間帯)または :code:`TIMESTAMP_NTZ`(タイムゾーンなし) |
1.0.0 |
|
|
|
1.0.0 |
サポートされた Snowpark Connect for Spark プロパティ¶
Snowpark Connect for Spark 固有のカスタム構成プロパティ
プロパティ名 |
デフォルト |
意味 |
以来 |
|---|---|---|---|
|
(なし) |
BLOBストレージ認証用のAzure SAS トークン。Azure Blob Storageの場所への読み取りまたは書き込み時に使用されます。 |
1.0.0 |
|
(なし) |
ADLS Gen2(データレイクストレージ)認証用Azure SAS トークン。Azure Data Lake Storage Gen2の場所への読み取りまたは書き込み時に使用されます。 |
1.0.0 |
|
|
|
1.0.0 |
|
|
Parquet要約メタデータファイルを生成するための代替構成。これまたは |
1.4.0 |
|
|
|
1.0.0 |
|
|
|
1.0.0 |
|
|
クエリキャッシュエントリの有効時間(秒)繰り返しのスキーマ検索を減らします。 |
1.0.0 |
|
|
|
1.0.0 |
|
|
|
1.7.0 |
|
(なし) |
Icebergテーブル操作用のSnowflake外部ボリューム名。 |
1.0.0 |
|
|
小数から整数型への変換を制御します。値: |
1.7.0 |
|
|
使用されるScalaバージョンを制御します( |
1.7.0 |
|
(なし) |
パーティション書き込み用の外部テーブルの場所パス。 |
1.4.0 |
|
|
|
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 |
|
|
|
1.0.0 |
|
|
読み取り専用現在の Snowpark Connect for Spark バージョンを返します。 |
1.0.0 |
|
|
ビューで重複する列名の処理方法。値: :code:`rename`(サフィックスを追加):code:`fail`(エラーを発生させる)または :code:`drop`(重複を削除) |
1.0.0 |
|
|
|
1.4.0 |
|
|
|
1.12.3 |
|
(なし) |
UDF/UDTFのパッケージ解決に使用するSnowflakeアーティファクトリポジトリの名前を指定します。設定されている場合、パッケージはAnacondaではなく指定されたリポジトリから解決されます。 |
1.14.0 |
|
(なし) |
:code:`x86`に設定した場合、UDFs、UDTFs、および:code:`applyInPandas`操作は、x86アーキテクチャ制約を伴って作成されます。これには、x86リソース制約を持つウェアハウスが必要です。 |
1.13.0 |
fs.azure.sas.<container>.<account>.blob.core.windows.net¶
BLOBストレージ認証用Azure SAS トークンを指定します。Azure Blob Storageの場所への読み取りまたは書き込み時に使用されます。
デフォルト: (なし)
以来:1.0.0
fs.azure.sas.fixed.token.<account>.dfs.core.windows.net¶
ADLS Gen2(データレイクストレージ)認証用のAzure SAS トークンを指定します。Azure Data Lake Storage Gen2の場所への読み取りまたは書き込み時に使用されます。
デフォルト: (なし)
以来:1.0.0
mapreduce.fileoutputcommitter.marksuccessfuljobs¶
HadoopまたはSparkワークフローとの互換性のための書き込み操作が成功した後に _SUCCESS ファイルを生成するには、 true を指定します。
デフォルト: false
以来:1.0.0
parquet.enable.summary-metadata¶
Parquet概要メタデータファイルを生成するための代替構成を指定します。このプロパティまたは spark.sql.parquet.enable.summary-metadata でその機能を有効にします。
デフォルト: false
以来:1.4.0
snowflake.repartition.for.writes¶
true を指定すると、書き込み時に DataFrame.repartition(n) が出力を n 個のファイルに分割するように強制します。Sparkの動作と一致しますが、オーバーヘッドが追加されます。
デフォルト: false
以来:1.0.0
snowpark.connect.cte.optimization_enabled ¶
クエリパフォーマンスを向上させるために、Snowparkセッションで共通テーブル式(CTE)の最適化を有効にするには、 true を指定します。
デフォルト: false
以来:1.0.0
snowpark.connect.describe_cache_ttl_seconds ¶
クエリキャッシュエントリの有効時間を秒単位で指定します。繰り返しのスキーマ検索を減らします。
デフォルト: 300
以来:1.0.0
snowpark.connect.enable_snowflake_extension_behavior ¶
Sparkの動作とは異なる可能性のあるSnowflake固有の拡張機能(MAP 型の MD5 戻り値の型のハッシュなど)を有効にするには、 true を指定します。
デフォルト: false
以来:1.0.0
コメント¶
true に設定した場合、特定の操作の動作を変更します。
bit_get/getbit--- Snowflake getbit関数 の明示的な使用
hash--- Snowflakeハッシュ関数 の明示的な使用
md5--- Snowflake md5関数 の明示的な使用テーブル列の名前変更 --- テーブル列を変更できるようにします
snowpark.connect.handleIntegralOverflow¶
統合的なオーバーフローの動作をSparkのアプローチに合わせるには、 true を指定します。
デフォルト: false
以来:1.7.0
snowpark.connect.iceberg.external_volume ¶
Icebergテーブル操作用のSnowflake外部ボリューム名を指定します。
デフォルト: (なし)
以来:1.0.0
snowpark.connect.integralTypesEmulation¶
小数を整数型に変換する方法を指定します。値: client_default、 enabled、 disabled
デフォルト: client_default
以来:1.7.0
コメント¶
デフォルトでは、 Snowpark Connect for Spark は、すべての整数型を Long 型として扱います。これは、 Snowflakeで数値が表現される 方法に起因します。統合型のエミュレートにより、データソースからの読み取り時に、Snowpark型とSpark型間の正確なマッピングが可能になります。
デフォルトのオプション 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
コメント¶
提供されたディレクトリからパーティション化されたファイルの正確なサブセットのみを読み取るには、追加の設定が必要です。この機能は、 外部ステージ に保存されたファイルでのみ使用できます。読み取りファイルを整理するために、 Snowpark Connect for Spark は 外部テーブル を使用します。
この機能は、構成 snowpark.connect.sql.partition.external_table_location が設定されている場合に有効化されます。外部テーブルが作成される既存のデータベース名とスキーマ名が含まれている必要があります。
外部ステージに保存されているParquetファイルを読み取ると、外部テーブルが作成されます。内部ステージ上のファイルの場合は作成されません。スキーマを提供すると、実行時間が短縮され、ソースからスキーマを推論するコストが削減されます。
最高のパフォーマンスを得るには、 Snowflake外部テーブルフィルタリングの制限 に従ってフィルターしてください。
例¶
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で直接作成するには、 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
コメント¶
この構成は、 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 の外部ライブラリやファイルを指定できます。構成は、不要な依存関係の混在を防ぐために、相互に排他的です。
外部ライブラリとファイルを含めるには、 snowpark.connect.udf.java.imports 構成設定の値としてファイルへのステージパスを指定します。構成値は、ファイルへのステージパスの配列である必要があります。パスはコンマで区切られます。
例¶
次の例のコードには、 UDF の実行コンテキストの2つのファイルが含まれています。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 ¶
true を指定すると、Spark互換の UDTF 動作が有効になり、Spark UDTF セマンティクスとの互換性が向上します。
デフォルト: false
以来:1.0.0
コメント¶
このプロパティは、 UDTFs がSpark互換の動作を使用するか、またはデフォルトのSnowpark動作を使用するかを決定します。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 は、列名の重複をサポートしていません。
例¶
次のコードは、次の SQL コンパイルエラーのためビュー作成ステップで失敗します:「重複した列名『foo』」
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:1つを除くすべての重複列は削除されます。列の値が異なる場合は、誤った結果になる可能性があります。
snowpark.connect.udf.java.imports¶
Java UDF 実行用にインポートするファイルとモジュールのコンマ区切りリストを指定します。変更時に UDF の再作成をトリガーします。
デフォルト: (なし)
以来:1.7.0
コメント¶
この構成は、 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 の外部ライブラリやファイルを指定できます。構成は、不要な依存関係の混在を防ぐために、相互に排他的です。
外部ライブラリとファイルを含めるには、 snowpark.connect.udf.java.imports 構成設定の値としてファイルへのステージパスを指定します。値は、ファイルへのステージパスの配列であり、パスはコンマで区切られます。
例¶
次の例のコードには、 UDF の実行コンテキストの2つのファイルが含まれています。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 ¶
true を指定すると、Spark互換の UDTF 動作が有効になり、Spark UDTF セマンティクスとの互換性が向上します。
デフォルト: false
以来:1.0.0
コメント¶
この設定は、 UDTFs がSpark互換の動作を使用するか、またはデフォルトのSnowpark動作を使用するかを決定します。有効にすると(true)、Sparkの出力型の強制(例: 文字列「true」をブール値に、ブール値を整数に)とエラー処理パターンを模倣する互換性ラッパーが適用されます。
ラッパーは、位置アクセスと名前付きアクセスの両方においてテーブル引数を行のようなオブジェクトに変換し、Sparkの動作パターンに合わせて SQL null値を適切に処理します。
snowpark.connect.sql.emulatePartitionOverwritesForSnowflakeTables¶
true の場合に、Spark SQL のSnowflakeテーブルでパーティションを上書きできます(INSERT OVERWRITE <table> PARTITION(<partition spec>))。
デフォルト: false
1.12.3以降
コメント¶
Snowflakeテーブルはユーザー定義のパーティション分割をサポートしておらず、デフォルトでは、パーティションの上書きはエラーになります。このオプションを有効にすると、INSERT OVERWRITE <table> PARTITION(<partition spec>) 構文を使用して上書きを実行できます。
<partition spec> はターゲットテーブルに存在する列を受け入れます。
例¶
次の例のコードは、student_idが222222の学生テーブルのすべての行を上書きします。
spark.conf.set("snowpark.connect.sql.emulatePartitionOverwritesForSnowflakeTables", True)
# create the students and persons tables as standard Snowflake tables
students_data = [
("Ashua Hill", "456 Erica Ct, Cupertino", 111111),
("Brian Reed", "723 Kern Ave, Palo Alto", 222222)
]
students_df = spark.createDataFrame(students_data, ["name", "address", "student_id"])
students_df.write.mode("overwrite").saveAsTable("students")
persons_data = [
("Dora Williams", "134 Forest Ave, Menlo Park", 123456789),
("Eddie Davis", "245 Market St, Milpitas", 345678901)
]
persons_df = spark.createDataFrame(persons_data, ["name", "address", "ssn"])
persons_df.write.mode("overwrite").saveAsTable("persons")
# overwrites all rows in the students table that have a student_id of 222222
spark.sql("""
INSERT OVERWRITE students PARTITION (student_id = 222222)
SELECT name, address FROM persons WHERE name = 'Dora Williams'
""").collect()
snowpark.connect.artifact_repository ¶
UDFs、UDTFs、applyInPandas、mapInArrow、および:code:`cogroup`操作を登録する際のパッケージ解決に使用する、Snowflake:doc:`アーティファクトリポジトリ</developer-guide/udf/python/udf-python-packages>`の名前を指定します。これが設定されると、:code:`snowpark.connect.udf.packages`を介して指定されたパッケージは、Anacondaからではなく、指定されたアーティファクトリポジトリから解決されます。
デフォルト: (なし)
1.14.0以降
コメント¶
デフォルトでは、|spconnect|は、SnowflakeのキュレーションされたAnacondaチャネルからPythonパッケージを解決します。この構成をアーティファクトリポジトリ名に設定することで、PyPIまたはその他の構成済みソースからパッケージを解決できるようになり、Anacondaチャネルでは提供されていないパッケージを使用することが可能になります。
Snowflakeでアーティファクトリポジトリを作成および構成する方法については、:doc:`/developer-guide/udf/python/udf-python-packages`をご参照ください。
この構成を変更すると、キャッシュされたUDFsおよびUDTFsは無効化され、次回の呼び出し時に新しいリポジトリで再作成されることになります。
この構成は、以下の操作に適用されます。
:code:`@udf`デコレーターまたは:code:`spark.udf.register()`により登録されたUDFs
:code:`@udtf`デコレーターまたは:code:`spark.udtf.register()`により登録されたUDTFs
groupBy().applyInPandas()`による:code:`applyInPandasDataFrame.mapInArrow()`による:code:`mapInArrowgroupBy().cogroup().applyInPandas()`による:code:`cogroup
例¶
次の例では、アーティファクトリポジトリを設定し、次にそのリポジトリから利用可能なパッケージである:code:`pykalman`を使用して、Kalmanフィルタースムージングを適用するUDFを定義します。
spark.conf.set("snowpark.connect.artifact_repository", "my_pypi_repo")
spark.conf.set("snowpark.connect.udf.packages", "[pykalman]")
@udf(returnType=DoubleType())
def kalman_smooth_value(value: float) -> float:
import numpy as np
from pykalman import KalmanFilter
kf = KalmanFilter(
transition_matrices=[1],
observation_matrices=[1],
initial_state_mean=0,
initial_state_covariance=1,
observation_covariance=1,
transition_covariance=0.1,
)
observations = np.array([value, value, value])
smoothed_state_means, _ = kf.smooth(observations)
return float(smoothed_state_means[-1][0])
df = spark.createDataFrame([(1, 10.0), (2, 20.0), (3, 30.0)], ["id", "value"])
df.select("id", kalman_smooth_value("value").alias("smoothed")).show()
アーティファクトリポジトリと利用可能なパッケージの詳細については、:doc:`/developer-guide/udf/python/udf-python-packages`をご参照ください。
snowpark.connect.udf.resource_constraint.architecture ¶
:code:`x86`に設定した場合、UDFs、UDTFs、および:code:`applyInPandas`操作は、x86アーキテクチャ制約を伴って作成されます。これを実行するには、x86リソース制約で構成されたウェアハウスが必要です。
デフォルト: (なし)
1.13.0以降
コメント¶
一部のサードパーティPythonパッケージ(TensorFlow、XGBoost、および特定の科学ライブラリなど)は、x86 CPUアーキテクチャ専用にビルドされています。この構成を:code:`x86`に設定すると、|spconnect|が生成する:code:`CREATE FUNCTION`ステートメントに:code:`RESOURCE_CONSTRAINT=(architecture='x86')`が追加され、UDFがx86互換のインフラストラクチャ上で実行されるようになります。
この構成を使用するには、x86リソース制約で作成されたウェアハウスでワークロードを実行する必要があります。次のリソース制約値は、x86をサポートしています。
:code:`MEMORY_1X_x86`(最小ウェアハウスサイズ:XSMALL)
:code:`MEMORY_16X_x86`(最小ウェアハウスサイズ:MEDIUM)
:code:`MEMORY_64X_x86`(最小ウェアハウスサイズ:LARGE)
ウェアハウスにx86リソース制約がない場合、UDFの実行は失敗します。
この構成は、以下の操作に適用されます。
:code:`@udf`デコレーターまたは:code:`spark.udf.register()`により登録されたUDFs
:code:`@udtf`デコレーターまたは:code:`spark.udtf.register()`により登録されたUDTFs
groupBy().applyInPandas()`による:code:`applyInPandas
例¶
次の例では、x86リソース制約を持つウェアハウスを作成し、UDFsに対してx86アーキテクチャを使用するように|spconnect|を構成します。
CREATE WAREHOUSE my_x86_warehouse WITH
WAREHOUSE_SIZE = 'MEDIUM'
WAREHOUSE_TYPE = 'SNOWPARK-OPTIMIZED'
RESOURCE_CONSTRAINT = 'MEMORY_16X_x86';
USE WAREHOUSE my_x86_warehouse;
spark.conf.set("snowpark.connect.udf.resource_constraint.architecture", "x86")
@udf(returnType=IntegerType())
def add_one(x: int) -> int:
return x + 1
df = spark.createDataFrame([(1,), (2,), (3,)], ["value"])
df.select(add_one(df["value"]).alias("result")).show()
ウェアハウスとリソースの制約の詳細については、:doc:`/user-guide/warehouses-snowpark-optimized`をご参照ください。
コメント¶
Snowflake共通テーブル式(CTEs) を有効にする設定。この設定により、多くの反復コードブロックが存在するSnowflakeクエリが最適化されます。この変更により、クエリのコンパイルと実行の両方のパフォーマンスが向上します。