Spark 커넥터 설치 및 구성하기

여러 버전의 커넥터가 지원되지만, Snowflake는 최신 버전의 커넥터를 사용할 것을 강력히 권장합니다. 최신 버전에 대한 릴리스 정보를 살펴보려면 Spark Connector 릴리스 노트 (사이드바에 있는 링크)를 참조하십시오.

이 항목의 지침은 지원되는 모든 버전의 커넥터를 설치 및 구성하기 위해 사용할 수 있습니다.

이 항목의 내용:

지원되는 버전

Snowflake는 여러 버전의 커넥터를 지원합니다.

커넥터 버전:

2.x

지원되는 Spark 버전:

Spark 3.4, 3.3, 3.2

지원되는 Scala 버전:

Scala 2.13, 2.12

데이터 소스 이름:

net.snowflake.spark.snowflake — v2.4.14 이상의 커넥터에서는 snowflake 를 데이터 소스 이름으로 사용할 수 있습니다.

패키지 이름(가져온 클래스용):

net.snowflake.spark.snowflake

패키지 배포:

Maven Central Repository의 Spark용 Snowflake Connector 페이지

소스 코드:

spark-snowflake (GitHub): . master (최신 버전용) , . previous_spark_version (이전 버전용)

다른 버전에 대한 개발자 노트는 소스 코드와 함께 호스팅됩니다.

참고

Snowflake Spark Connector는 일반적으로 3가지 최신 버전의 Spark를 지원합니다. Spark 버전에 고유한 커넥터 버전을 다운로드합니다.

예를 들어, Spark 버전 3.4에서 커넥터 버전 2.12.0을 사용하려면 커넥터의 2.12.0-spark_3.4 버전을 다운로드합니다.

요구 사항

Spark와 함께 Snowflake를 설치 및 사용하려면 다음이 필요합니다.

  • 지원되는 운영 체제. 지원되는 운영 체제 목록은 운영 체제 지원 을 참조하십시오.

  • Spark용 Snowflake Connector.

  • Snowflake JDBC 드라이버(커넥터 버전과 호환 버전).

  • Apache Spark 환경, 자체 호스팅 또는 다음 중 1개에서 호스팅:

  • 또한, 전용 Amazon S3 버킷 또는 Azure Blob 저장소 컨테이너를 두 시스템 간의 스테이징 존으로 사용할 수 있지만, 모든 데이터 교환에 임시 Snowflake 내부 스테이지(기본값)를 사용하는 커넥터 버전 2.2.0(이상)에서는 필요하지 않습니다.

  • 연결에서 사용되는 역할에는 읽거나 쓸 테이블이 포함된 스키마에 대한 USAGE 및 CREATE STAGE 권한이 필요합니다.

참고

Databricks 또는 Qubole을 사용하여 Spark를 호스팅하는 경우에는 Spark용 Snowflake Connector(또는 기타 요구 사항)를 다운로드하거나 설치할 필요가 없습니다. Databricks와 Qubole은 커넥터를 통합하여 기본 연결을 제공합니다.

자세한 내용은 다음을 참조하십시오.

OCSP 커넥터 또는 드라이버 버전 확인하기

Snowflake는 OCSP를 사용하여 Snowflake로 연결할 때 인증서 체인을 평가합니다. 드라이버 또는 커넥터 버전 및 구성 모두를 통해 OCSP 동작이 결정됩니다. 드라이버 또는 커넥터 버전, 구성 및 OCSP 동작에 대한 자세한 내용은 OCSP 구성 를 참조하십시오.

커넥터 다운로드 및 설치하기

이 섹션의 지침은 Spark용 Snowflake Connector 버전 2.x 이상에 적용됩니다.

중요

Snowflake는 새 버전의 커넥터를 정기적으로 릴리스합니다. 새 버전을 설치할 때마다 수행해야 하는 설치 작업은 다음과 같습니다. 이는 Spark 커넥터의 전제 조건인 Snowflake JDBC 드라이버에도 적용됩니다.

1단계: Spark용 Snowflake Connector 최신 버전 다운로드

Snowflake는 여러 버전의 커넥터를 제공합니다. 다음에 따라 적절한 버전을 다운로드하십시오.

  • 사용할 Spark용 Snowflake Connector의 버전.

  • 사용 중인 Spark의 버전.

  • 사용 중인 Scala의 버전.

Maven에서 Snowflake Spark Connector를 다운로드할 수 있습니다. 드라이버를 빌드하려면 Github에서 원본 코드에 액세스할 수 있습니다.

Maven Central Repository

Snowflake는 지원되는 각 Scala 버전(2.12 및 2.13)에 대해 별도의 패키지 아티팩트를 제공합니다. 이러한 각 Scala 버전에 대해, Snowflake는 다양한 버전의 Spark 커넥터뿐 아니라, 다양한 버전의 Spark를 지원하는 별도의 아티팩트도 제공합니다.

Spark 커넥터를 다운로드하는 방법은 다음과 같습니다.

  1. Maven 리포지토리에서 사용 중인 Scala 버전을 검색합니다.

    다음 스크린샷은 검색 결과 페이지의 예를 제공합니다.

    Snowflake Connector for Spark download page in Maven

    Latest Version 열에 사용 가능한 최신 버전의 드라이버가 나열됩니다.

    개별 패키지에서 사용되는 명명 규칙은 다음과 같습니다.

    N.N.N-spark_P.P
    
    Copy

    여기서,

    • N.N.N 은 Snowflake 버전(예: 2.12.0)입니다.

    • P.P 는 Spark 버전(예: 3.4)입니다.

    예:

    2.12.0-spark_3.4
    
    Copy
  2. 사용 중인 Spark의 지원되는 버전에 대한 아티팩트가 보이지 않으면 Latest Version 열 아래의 all 링크를 클릭하십시오.

  3. Download 열에 있는 jar 링크를 클릭하여 JAR 파일을 다운로드합니다.

  4. 패키지 서명을 확인 할 계획이라면 서명 파일도 다운로드해야 합니다.

    1. Version 열에 있는 N.N.N-spark_P.P 링크를 클릭하여 버전 페이지를 표시합니다.

    2. net.snowflake : spark-snowflake_x.xx : N.N.N-spark_P.P 링크를 클릭하여 해당 버전의 아티팩트를 나열하는 페이지를 로딩합니다(여기서 x.xx 는 사용하려는 Scala 버전임. 예: 2.12).

    3. spark-snowflake_2.1x-N.N.N-spark_P.P.jar.asc 링크를 클릭하여 서명 파일을 다운로드합니다.

GitHub

Spark Snowflake Connector의 소스 코드는 GitHub 에서 제공됩니다. 그러나 컴파일된 패키지는 GitHub에서 제공됩니다. 컴파일된 패키지는 Maven 에서 다운로드할 수 있습니다.

2단계: Snowflake JDBC 드라이버의 호환 버전 다운로드

다음으로 사용 중인 Snowflake Spark Connector 버전과 호환되는 Snowflake JDBC 드라이버 버전을 다운로드해야 합니다.

Snowflake JDBC 드라이버는 Maven Central Repository의 JDBC Driver 페이지 를 통해 표준 Java 패키지로 제공됩니다. 패키지를 .jar 파일로 다운로드하거나 패키지를 직접 참조할 수 있습니다. 이 지침에서는 사용자가 이 패키지를 참조하는 것으로 간주합니다.

사용 중인 Snowflake Spark Connector 버전에서 지원되는 Snowflake JDBC 드라이버 버전을 찾으려면 Snowflake Connector for Spark 릴리스 정보 섹션을 참조하십시오.

Snowflake JDBC 드라이버 다운로드 및 설치에 대한 자세한 내용은 JDBC 드라이버 다운로드/통합하기 를 참조하십시오.

3단계(선택 사항): Spark용 Snowflake Connector 패키지 서명 확인

Spark용 Snowflake Connector 패키지 서명을 확인하는 방법은 다음과 같습니다.

  1. 공개 키 서버에서 자신이 사용 중인 Spark용 Snowflake Connector 버전에 대한 Snowflake GPG 공개 키를 다운로드하고 가져옵니다.

    • 버전 2.11.1 이상:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 630D9F3CAB551AF3
    • 버전 2.8.2부터 2.11.0까지:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 37C7086698CB005C
    • 버전 2.4.13부터 2.8.1까지:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys EC218558EABB25A1
    • 버전 2.4.12 이하:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 93DB296A69BE019A

    참고

    이 명령이 다음 오류와 함께 실패하는 경우:

    gpg: keyserver receive failed: Server indicated a failure
    
    Copy

    그리고 키 서버에 포트 80을 사용하도록 지정합니다.

    gpg --keyserver hkp://keyserver.ubuntu.com:80  ...
    
    Copy
  2. gpg --verify 명령을 실행하여 패키지의 서명을 확인합니다.

    --verify 명령줄 플래그의 경우, 이전에 다운로드한 .asc 파일을 서명 파일로 지정하고 JAR 파일을 서명된 데이터를 포함한 파일로 지정합니다.

    $ gpg --verify spark-snowflake_x.xx-N.N.N-spark_P.P.jar.asc spark-snowflake_x.xx-N.N.N-spark_P.P.jar
    gpg: Signature made Wed 22 Feb 2017 04:31:58 PM UTC using RSA key ID <gpg_key_id>
    gpg: Good signature from "Snowflake Computing <snowflake_gpg\ @snowflake.net>"
    
    Copy

    여기서,

    • x.xx 는 Scala 버전(예: 2.12)입니다.

    • N.N.N 은 Spark용 Snowflake Connector의 버전입니다(예: 2.12.0).

    • P.P 는 Spark 버전(예: 3.4)입니다.

    참고

    서명을 확인하면 다음과 유사한 경고가 표시됩니다.

    gpg: Signature made Mon 24 Sep 2018 03:03:45 AM UTC using RSA key ID <gpg_key_id>
    gpg: Good signature from "Snowflake Computing <snowflake_gpg@snowflake.net>" unknown
    gpg: WARNING: This key is not certified with a trusted signature!
    gpg: There is no indication that the signature belongs to the owner.
    
    Copy

    경고를 방지하려면, Snowflake GPG 공개 키에 암시적 신뢰를 부여할 수 있습니다.

  3. 로컬 환경에는 여러 개의 GPG 키가 포함될 수 있지만, 보안상의 이유로 Snowflake는 공개 GPG 키를 주기적으로 순환합니다. 가장 좋은 방법은 서명된 최신 패키지에서 최신 키가 작동하는지 확인한 후 기존 공개 키를 삭제하는 것입니다. 예:

    $ gpg --delete-key "Snowflake Computing"
    
    Copy

4단계: 로컬 Spark 클러스터 또는 Amazon EMR 호스팅 Spark 환경 구성하기

로컬에 Spark를 설치하거나 Amazon EMR에 Spark를 설치 한 경우, Snowflake JDBC 드라이버 및 Spark Connector를 모두 포함하도록 spark-shell 프로그램을 구성해야 합니다.

  • Snowflake JDBC 드라이버를 포함하려면 --package 옵션을 사용하여 Maven Central Repository의 JDBC Driver 페이지 에서 JDBC 패키지를 참조하여 사용할 드라이버의 정확한 버전 (예: net.snowflake:snowflake-jdbc:3.13.30)을 입력합니다.

  • Spark Connector를 포함하려면 --package 옵션을 사용하여 Maven Central Repository에서 호스팅되는 적절한 패키지(Scala 2.12 또는 Scala 2.13)를 참조하여 사용할 드라이버의 정확한 버전(예: net.snowflake:spark-snowflake_2.12:2.12.0-spark_3.4)을 입력합니다.

예:

spark-shell --packages net.snowflake:snowflake-jdbc:3.13.22,net.snowflake:spark-snowflake_2.12:2.12.0-spark_3.4
Copy

추가 패키지 설치하기(필요한 경우)

Spark 설치에 따라 커넥터의 일부 필수 패키지가 누락될 수 있습니다. spark-shell 에 적절한 플래그를 사용하여 누락된 패키지를 설치에 추가할 수 있습니다.

  • --packages

  • --jars (패키지를 .jar 파일로 다운로드한 경우)

아래에는 패키지를 참조하기 위해 --packages 플래그를 사용하기 위한 구문(버전 번호 포함)과 함께 필수 패키지가 나열되어 있습니다.

  • org.apache.hadoop:hadoop-aws:2.7.1

  • org.apache.httpcomponents:httpclient:4.3.6

  • org.apache.httpcomponents:httpcore:4.3.3

  • com.amazonaws:aws-java-sdk-core:1.10.27

  • com.amazonaws:aws-java-sdk-s3:1.10.27

  • com.amazonaws:aws-java-sdk-sts:1.10.27

예를 들어, Apache 패키지가 누락된 경우 참조로 패키지를 추가하려면:

spark-shell --packages org.apache.hadoop:hadoop-aws:2.7.1,org.apache.httpcomponents:httpclient:4.3.6,org.apache.httpcomponents:httpcore:4.3.3
Copy

파일을 위한 외부 위치 준비하기

Snowflake와 Spark 사이에서 전송할 파일의 외부 위치를 준비해야 할 수 있습니다.

다음 상황 중 1개에 해당하는 경우 이 작업을 수행해야 합니다.

  • 커넥터가 데이터를 교환하기 위해 내부 스테이지에 액세스하는 데 사용되는 토큰의 최대 기간인 36시간을 초과하는 작업을 실행합니다.

  • Spark용 Snowflake Connector의 버전이 2.1.x 이하입니다(작업에 필요한 시간이 36시간 미만인 경우에도 해당).

    참고

    현재 v2.2.0 이상 버전을 사용하지 않는 경우 Snowflake는 최신 버전으로 업그레이드할 것을 강력하게 권장합니다.

AWS 외부 S3 버킷 준비하기

커넥터가 Snowflake와 Spark 사이에서 데이터를 교환하기 위해 사용할 수 있는 외부 S3 버킷을 준비합니다. 그리고 위치에 필요한 AWS 자격 증명과 함께 위치 정보를 커넥터에 제공합니다. 자세한 내용은 이 항목의 데이터 교환을 위해 S3 인증하기 섹션을 참조하십시오.

중요

외부 S3 버킷을 사용하는 경우 커넥터는 이 위치에서 중간/임시 데이터를 자동으로 제거하지 않습니다. 그러므로 특정 버킷 또는 경로(접두사)를 사용하고 버킷/경로에 수명 주기 정책을 설정하여 오래된 파일을 자동으로 정리하는 것이 좋습니다. 수명 주기 정책 구성에 대한 자세한 내용은 Amazon S3 설명서 를 참조하십시오.

Azure Blob 저장소 컨테이너 준비하기

커넥터가 Snowflake와 Spark 사이에서 데이터를 교환하기 위해 사용할 수 있는 외부 Azure Blob 저장소 컨테이터를 준비합니다. 그리고 위치에 필요한 Azure 자격 증명과 함께 위치 정보를 커넥터에 제공합니다. 자세한 내용은 이 항목의 데이터 교환을 위해 Azure 인증하기 섹션을 참조하십시오.