다음을 통해 공유


Google Cloud Storage에 연결

이 문서에서는 GCS(Google Cloud Storage)에 저장된 테이블과 데이터를 읽고 쓰기 위해 Azure Databricks에서의 연결을 구성하는 방법을 설명합니다.

GCS 버킷에서 읽거나 쓰려면 연결된 서비스 계정을 만들고 버킷을 서비스 계정과 연결해야 합니다. 서비스 계정에 대해 생성한 키를 사용하여 버킷에 직접 연결합니다.

Google Cloud 서비스 계정 키를 사용하여 GCS 버킷에 직접 액세스

버킷을 읽고 직접 쓰려면 Spark 구성에 정의된 키를 구성합니다.

1단계: Google 클라우드 콘솔을 사용하여 Google Cloud 서비스 계정 설정

Azure Databricks 클러스터에 대한 서비스 계정을 만들어야 합니다. Databricks의 권장 사항에 따라 이 서비스 계정에 해당 작업을 수행하는 데 필요한 최소한의 권한을 부여하는 것이 좋습니다.

  1. 왼쪽 탐색 창에서 IAM 및 관리자를 클릭합니다.

  2. 서비스 계정을 클릭합니다.

  3. + 서비스 계정 만들기를 클릭합니다.

  4. 서비스 계정 이름 및 설명을 입력합니다.

    GCS에 대한 Google 서비스 계정 만들기

  5. 만들기를 클릭합니다.

  6. 계속을 클릭합니다.

  7. 완료를 클릭합니다.

2단계: GCS 버킷에 직접 액세스하기 위한 키 만들기

Warning

서비스 계정에 대해 생성하는 JSON 키는 GCP 계정의 데이터 세트 및 리소스에 대한 액세스를 제어하므로 승인된 사용자와만 공유해야 하는 프라이빗 키입니다.

  1. Google 클라우드 콘솔의 서비스 계정 목록에서 새로 만들어진 계정을 클릭합니다.

  2. 섹션에서 키 추가 > 새 키 만들기를 클릭합니다.

    Google 키 만들기

  3. JSON 키 형식을 수락합니다.

  4. 만들기를 클릭합니다. 키 파일이 컴퓨터에 다운로드됩니다.

3단계: GCS 버킷 구성

버킷 만들기

아직 버킷이 없는 경우 다음과 같이 만듭니다.

  1. 왼쪽 탐색 창에서 스토리지를 클릭합니다.

  2. 버킷 만들기를 클릭합니다.

    Google 버킷 만들기

  3. 만들기를 클릭합니다.

버킷 구성

  1. 버킷 세부 정보를 구성합니다.

  2. 권한 탭을 클릭합니다.

  3. 권한 레이블 옆에 있는 추가를 클릭합니다.

    Google 버킷 세부 정보

  4. Cloud Storage 역할에서 버킷의 서비스 계정에 대한 스토리지 관리자 권한을 제공합니다.

    Google 버킷 권한

  5. 저장을 클릭합니다.

4단계: Databricks 비밀에 서비스 계정 키 배치

Databricks는 모든 자격 증명을 저장하기 위해 비밀 범위를 사용하는 것을 권장합니다. 키 JSON 파일의 프라이빗 키 및 프라이빗 키 ID를 Databricks 비밀 범위에 넣을 수 있습니다. 작업 영역의 사용자, 서비스 주체, 그룹에 비밀 범위를 읽을 수 있는 액세스 권한을 부여할 수 있습니다. 이렇게 하면 사용자에게 GCS 액세스를 허용하면서 서비스 계정 키를 보호합니다. 비밀 범위를 만들려면 비밀 관리를 참조 하세요.

5단계: Azure Databricks 클러스터 구성

Spark 구성 탭에서 전역 구성 또는 버킷당 구성을 구성합니다. 다음 예제에서는 Databricks 비밀로 저장된 값을 사용하여 키를 설정합니다.

참고 항목

클러스터 액세스 제어와 Notebook 액세스 제어를 함께 사용하여 GCS 버킷의 서비스 계정 및 데이터에 대한 액세스를 보호합니다. 컴퓨팅 권한Databricks Notebook을 사용하여 공동 작업을 참조하세요.

전역 구성

제공된 자격 증명을 사용하여 모든 버킷에 액세스해야 하는 경우 이 구성을 사용합니다.

spark.hadoop.google.cloud.auth.service.account.enable true
spark.hadoop.fs.gs.auth.service.account.email <client-email>
spark.hadoop.fs.gs.project.id <project-id>
spark.hadoop.fs.gs.auth.service.account.private.key {{secrets/scope/gsa_private_key}}
spark.hadoop.fs.gs.auth.service.account.private.key.id {{secrets/scope/gsa_private_key_id}}

<client-email>, <project-id>를 키 JSON 파일의 정확한 필드 이름 값으로 바꿉니다.

버킷당 구성

특정 버킷에 대한 자격 증명을 구성해야 하는 경우 이 구성을 사용합니다. 버킷당 구성 구문은 다음 예제와 같이 각 구성의 끝에 버킷 이름을 추가합니다.

Important

버킷별 구성은 전역 구성 외에도 사용할 수 있습니다. 지정된 경우 버킷당 구성은 전역 구성을 대체합니다.

spark.hadoop.google.cloud.auth.service.account.enable.<bucket-name> true
spark.hadoop.fs.gs.auth.service.account.email.<bucket-name> <client-email>
spark.hadoop.fs.gs.project.id.<bucket-name> <project-id>
spark.hadoop.fs.gs.auth.service.account.private.key.<bucket-name> {{secrets/scope/gsa_private_key}}
spark.hadoop.fs.gs.auth.service.account.private.key.id.<bucket-name> {{secrets/scope/gsa_private_key_id}}

<client-email>, <project-id>를 키 JSON 파일의 정확한 필드 이름 값으로 바꿉니다.

6단계: GCS에서 읽기

GCS 버킷에서 읽으려면 지원되는 형식으로 Spark 읽기 명령을 사용합니다. 예를 들면 다음과 같습니다.

df = spark.read.format("parquet").load("gs://<bucket-name>/<path>")

GCS 버킷에 쓰려면 지원되는 형식으로 Spark 쓰기 명령을 사용합니다. 예를 들면 다음과 같습니다.

df.write.mode("<mode>").save("gs://<bucket-name>/<path>")

<bucket-name>의 이름을 3단계: GCS 버킷 구성에서 만든 버킷 이름으로 바꿉니다.

예제 Notebook

Google Cloud Storage Notebook에서 읽기

Notebook 가져오기

Google Cloud Storage Notebook에 쓰기

Notebook 가져오기