Snowpark Migration Accelerator: Spark参照カテゴリ

SnowConvert for Sparkは、Snowparkへのマッピング方法に基づいてSpark要素を分類します。以下のカテゴリでは、各Spark参照がどのように翻訳されているかを説明しています。

  • SnowConvert が自動的に変換できるかどうか

  • Snowparkへの実装が可能かどうか

  • 翻訳例

  • マッピングプロセスの説明

以下のセクションでは、各ステータスタイプについて説明し、例を示します。

直接

直接翻訳とは、 PySpark とSnowparkの両方で関数が全く同じように動作することを意味し、コードの修正は必要ありません。

  • Snowparkサポート: あり

  • ツールサポート: あり

  • Sparkの例:

col("col1")
Copy
  • Snowparkの例:

col("col1")
Copy

名前変更

PySpark 関数には、Snowparkで同等の機能がありますが、別の関数名を使用する必要があります。

  • Snowparkサポート: あり

  • ツールサポート: あり

  • Sparkの例:

orderBy("date")
Copy
  • Snowparkの例:

sort("date")
Copy

Helper

注釈

Spark Conversion Core V2.40.0から、Python拡張ライブラリはサポートされなくなりました。Python Sparkの要素は、このバージョン以降、拡張として分類されません。しかし、Snowpark拡張ライブラリのヘルパークラスは引き続きSpark Scalaで利用可能です。

SparkとSnowparkの機能差に対処するために、拡張ファイルにヘルパー関数を作成することができます。このヘルパー関数は元のSpark関数と同じ署名を持ち、必要なファイルから呼び出すことができます。互換性の問題を解決するために、拡張ライブラリにはこの関数が含まれています。

Snowpark拡張ライブラリの詳細情報については、 GitHub リポジトリを https://github.com/Snowflake-Labs/snowpark-extensions でご覧ください。

例としては、パラメーターの追加やパラメーターの順序の変更などがあります。

  • Snowparkサポート: あり

  • ツールサポート: あり

  • Sparkの例:

instr(str, substr)
Copy
  • Snowparkの例:

# creating a helper function named instr with an 
# identical signature as the pyspark function, like:

def instr(source: str, substr: str) -> str:
    """
    Returns the position of a substring within a source string.
    Similar to the CHARINDEX function in SQL.
    
    Args:
        source: The string to search in
        substr: The string to search for
        
    Returns:
        The position where the substring is found, or 0 if not found
    """
    return charindex(substr, str)

## Transformation

The function is rebuilt in Snowpark to achieve the same results as the original, though it may look different. The new version might use multiple functions or additional code lines to accomplish the same task.

* Snowpark Support: Yes
* Tool Support: Yes
* Spark Example:

```{code} python
:force:
col1 = col("col1")
col2 = col("col2")
col1.contains(col2)
Copy
  • Snowparkの例:

col1 = col("col1")
col2 = col("col2")
from snowflake.snowpark.functions as f
f.contains(col, col2)
Copy

WorkAround

このカテゴリは、 SMA が PySpark 要素を自動的に変換できない場合に適用されますが、変換を完了するためにツールのドキュメントで利用可能な、文書化された手動ソリューションがあります。

  • Snowparkサポート: あり

  • ツールサポート: なし

  • Sparkの例:

instr(str, substr)
Copy
  • Snowparkの例:

#EWI: SPRKPY#### => pyspark function has a workaround, see documentation for more info
charindex(substr, str)
Copy

NotSupported

このカテゴリは、Snowflakeに同等のものがないため、 PySpark 要素を変換できない場合に適用されます。

  • Snowparkサポート: なし

  • ツールサポート: なし

  • Sparkの例:

df:DataFrame = spark.createDataFrame(rowData, columns)
df.alias("d")
Copy
  • Snowparkの例:

df:DataFrame = spark.createDataFrame(rowData, columns)
# EWI: SPRKPY11XX => DataFrame.alias is not supported
# df.alias("d")
Copy

NotDefined

このエラーは、ツールが PySpark 要素を識別したものの、その要素がツールのサポートする変換データベースに含まれていないために変換できない場合に発生します。

このカテゴリは、Snowflakeに対応する機能または関数がないため、 PySpark 要素を変換できない場合に適用されます。

  • Snowparkサポート: なし

  • ツールサポート: なし

  • Sparkの例: 該当なし

  • Snowparkの例: 該当なし

評価結果は、検出されたすべてのSpark API 参照を以下のカテゴリに分類します。