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

헬퍼

참고

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

이 카테고리는 PySpark 요소를 변환할 수 없는 경우에 적용되며, 이는 Snowflake에 일치하는 요소가 없기 때문입니다.

  • 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 참조를 다음 카테고리로 분류합니다.