Snowpark Migration Accelerator: 출력 코드 배포하기

Snowpark Migration Accelerator(SMA)에서 생성된 출력 코드를 실행하려면 소스 플랫폼에 따라 다음 환경별 권장 사항을 따르십시오.

Spark Scala

Snowpark에서 마이그레이션한 Apache Spark 코드를 실행하기 전에 다음과 같은 중요한 고려 사항을 검토하십시오.

Snowpark 및 Snowpark 확장자 라이브러리 참조 추가하기

마이그레이션된 프로젝트에는 Snowpark 라이브러리와 확장자에 대한 참조가 모두 포함되어야 합니다.

Snowpark Extensions

Snowpark Extension은 표준 Snowpark 라이브러리에 Apache Spark 기능을 추가하는 라이브러리입니다. 이러한 기능은 현재 Snowpark에서 사용할 수 없습니다. 이 라이브러리는 개발자가 Apache Spark에서 Snowpark로 프로젝트를 보다 쉽게 마이그레이션할 수 있도록 도와줍니다.

마이그레이션한 코드에서 Snowpark 및 Snowpark Extension 라이브러리를 참조하려면 다음 단계를 따르십시오.

  1. 프로젝트에 Snowpark 라이브러리 참조 추가하기

  2. 프로젝트에 Snowpark Extension 라이브러리 참조 추가하기

  3. 다음 라이브러리를 사용하도록 코드를 업데이트하십시오

1단계 - 프로젝트 구성 파일에 Snowpark 및 Snowpark 확장자 라이브러리 참조 추가하기

이 도구는 프로젝트 구성 파일에 이러한 종속성을 자동으로 추가합니다. 종속성이 추가되면 빌드 도구가 종속성 해결을 처리합니다.

프로젝트 구성 파일의 파일 확장자에 따라 도구는 다음과 같은 방식으로 적절한 참조를 자동으로 추가합니다.

build.gradle

dependencies {
    implementation 'com.snowflake:snowpark:1.6.2'
    implementation 'net.mobilize.snowpark-extensions:snowparkextensions:0.0.9'
    ...
}
Copy

build.sbt

...
libraryDependencies += "com.snowflake" % "snowpark" % "1.6.2"
libraryDependencies += "net.mobilize.snowpark-extensions" % "snowparkextensions" % "0.0.9"
...
Copy

pom.xml

<dependencies>
    <dependency>
        <groupId>com.snowflake</groupId>
        <artifactId>snowpark</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>net.mobilize.snowpark-extensions</groupId>
        <artifactId>snowparkextensions</artifactId>
        <version>0.0.9</version>
    </dependency>
    ...
</dependencies>
Copy

2단계 - Snowpark 확장자 라이브러리 가져오기 문 추가하기

이 도구는 생성된 모든 .scala 파일에 이 2개의 가져오기 문을 자동으로 추가합니다.

import com.snowflake.snowpark_extensions.Extensions._
import com.snowflake.snowpark_extensions.Extensions.functions._
Copy

코드 예제

아래 코드는 hexisin 함수를 사용하며, 이는 Spark에 고유하지만 Snowpark에는 없는 함수입니다. 그러나 이러한 함수는 Snowpark 확장자를 통해 제공되므로 코드는 여전히 성공적으로 실행됩니다.

입력 코드

package com.mobilize.spark

import org.apache.spark.sql._

object Main {

   def main(args: Array[String]) : Unit = {

      var languageArray = Array("Java");

      var languageHex = hex(col("language"));

      col("language").isin(languageArray:_*);
   }

}
Copy

출력 코드

package com.mobilize.spark

import com.snowflake.snowpark._
import com.snowflake.snowpark_extensions.Extensions._
import com.snowflake.snowpark_extensions.Extensions.functions._

object Main {

   def main(args: Array[String]) : Unit = {

      var languageArray = Array("Java");
      
      // hex does not exist on Snowpark. It is a extension.
      var languageHex = hex(col("language"));
      
      // isin does not exist on Snowpark. It is a extension.
      col("language").isin(languageArray :_*)

   }

}
Copy

PySpark

마이그레이션된 PySpark 코드를 Snowpark에서 실행하기 전에 다음과 같은 중요한 고려 사항을 검토하십시오.

Snowpark 및 Snowpark 확장자 라이브러리 설치하기

마이그레이션된 프로젝트에는 Snowpark 라이브러리와 확장자에 대한 참조가 모두 포함되어야 합니다.

Snowpark Extensions

Snowpark Extension은 표준 Snowpark 라이브러리에 PySpark 같은 기능을 추가하는 라이브러리입니다. 이러한 기능은 현재 Snowpark에서 사용할 수 없습니다. 이 라이브러리는 개발자가 PySpark 에서 Snowpark로 프로젝트를 더 쉽게 마이그레이션할 수 있도록 도와줍니다.

마이그레이션한 코드에서 Snowpark 및 Snowpark Extension 라이브러리를 참조하려면 다음 단계를 따르십시오.

  1. 마이그레이션된 코드에 Snowpark 라이브러리 참조 추가하기

  2. 필요한 경우 Snowpark Extension 라이브러리 참조 포함

1단계 - Snowpark 라이브러리 설치하기

pip install snowpark-extensions
Copy

2단계 - Snowpark 확장자 라이브러리 설치하기

pip install snowflake-snowpark-python
Copy

3단계 - Snowpark 확장자 라이브러리 가져오기 문 추가하기

이 도구는 PySpark 기능이 요구되는 모든 파일에 PySpark 가져오기 문을 자동으로 추가합니다.

import snowpark_extensions
Copy

코드 예제

create_map 함수는 PySpark 에서 사용할 수 없지만, 확장자를 통해 Snowpark에서 지원됩니다. 즉, 코드를 수정하지 않아도 Snowpark에서 올바르게 작동합니다.

입력 코드

import pyspark.sql.functions as df
df.select(create_map('name', 'age').alias("map")).collect()
Copy

출력 코드

import snowpark_extensions
import snowflake.snowpark.functions as df
df.select(create_map('name', 'age').alias("map")).collect()
Copy