Apache Spark에 연결
BigQuery 관리자는 데이터 분석가가 Apache Spark의 저장 프로시저를 실행하도록 연결을 만들 수 있습니다.
시작하기 전에
BigQuery Connection API 사용 설정하기
-
Spark 연결을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 BigQuery 연결 관리자(
roles/bigquery.connectionAdmin
) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요. - (선택사항): Dataproc Metastore를 사용하여 메타데이터를 관리하려면 Dataproc Metastore 서비스를 만들었는지 확인하세요.
- (선택사항): Spark 기록 서버 웹 인터페이스를 사용하여 작업 기록을 보려면 Dataproc 영구 기록 서버(PHS)를 만들어야 합니다.
위치 고려사항
데이터 위치를 선택할 때는 다음 사항을 고려해야 합니다.
멀티 리전
동일한 넓은 지리적 지역에 있는 Google Cloud 리소스를 지정해야 합니다.
BigQuery US 멀티 리전의 연결은
us-central1
,us-east4
,us-west2
등 미국 내 어느 단일 리전의 Spark 기록 서버 또는 Dataproc Metastore를 참조할 수 있습니다.BigQuery EU 멀티 리전의 연결은
europe-north1
또는europe-west3
등 유럽 연합 회원국의 Spark 기록 서버 또는 Dataproc Metastore를 참조할 수 있습니다.
단일 리전
단일 리전의 연결은 같은 리전의 Google Cloud 리소스만 참조할 수 있습니다. 예를 들어 단일 리전 us-east4
의 연결은 us-east4
의 Spark 기록 서버 또는 Dataproc Metastore만 참조할 수 있습니다.
연결 만들기
다음 옵션 중 하나를 선택합니다.
콘솔
BigQuery 페이지로 이동합니다.
연결을 만들려면 추가
데이터 추가를 클릭한 다음 외부 데이터 소스에 연결을 클릭합니다.연결 유형 목록에서 Apache Spark를 선택합니다.
연결 ID 필드에 연결 이름을 입력합니다(예:
spark_connection
).데이터 위치 목록에서 리전을 선택합니다.
BigQuery를 지원하는 리전 및 멀티 리전에서 연결을 만들 수 있습니다. 자세한 내용은 위치 고려사항을 참조하세요.
(선택사항): Metastore 서비스 목록에서 Dataproc Metastore를 선택합니다.
(선택사항): 기록 서버 클러스터 필드에 Dataproc 영구 기록 서버를 입력합니다.
연결 만들기를 클릭합니다.
연결로 이동을 클릭합니다.
연결 정보 창에서 다음 단계에 사용할 서비스 계정 ID를 복사합니다.
bq
명령줄 환경에서
bq mk
명령어를 사용하여 연결을 만듭니다.bq mk --connection --connection_type='SPARK' \ --properties=PROPERTIES \ --project_id=PROJECT_ID \ --location=LOCATION CONNECTION_ID
다음을 바꿉니다.
PROPERTIES
: JSON 형식으로 연결별 매개변수를 제공하는 키-값 쌍입니다.예를 들면 다음과 같습니다.
--properties='{ "metastoreServiceConfig": {"metastoreService": "METASTORE_SERVICE_NAME"}, "sparkHistoryServerConfig": {"dataprocCluster": "DATAPROC_CLUSTER_NAME"} }'
다음을 바꿉니다.
METASTORE_SERVICE_NAME
: gRPC 네트워크 구성을 사용하는 Dataproc Metastore(예:projects/my-project-id/locations/us-central1/services/my-service
)자세한 내용은 엔드포인트 프로토콜을 사용하여 저장된 Hive 메타스토어 메타데이터에 액세스하는 방법을 참조하세요.
DATAPROC_CLUSTER_NAME
: Spark 기록 서버 구성(예:projects/my-project-id/regions/us-central1/clusters/my-cluster
)자세한 내용은 영구 기록 서버 클러스터 만들기를 참조하세요.
PROJECT_ID
: Google Cloud 프로젝트 IDLOCATION
: 연결을 저장할 위치(예:US
)CONNECTION_ID
: 연결 ID(예:myconnection
).Google Cloud 콘솔에서 연결 세부정보를 볼 때 연결 ID는 연결 ID에 표시되는 정규화된 연결 ID의 마지막 섹션에 있는 값입니다(예:
projects/.../locations/.../connections/myconnection
).
다른 단계에 필요하므로 서비스 계정 ID를 검색하고 복사합니다.
bq show --location=LOCATION --connection PROJECT_ID.LOCATION.CONNECTION_ID
출력은 다음과 비슷합니다.
Connection myproject.us.myconnection name type properties ---------------------- ------- --------------------------------------------------- myproject.us.myconnection SPARK {"serviceAccountId": "bqserver@example.iam.gserviceaccount.com"}
연결 관리 방법에 대한 자세한 설명은 연결 관리를 참조하세요.
서비스 계정에 액세스 권한 부여
Apache Spark의 저장 프로시져가 Google Cloud 리소스에 액세스하도록 허용하려면 저장 프로시저의 연결과 관련된 서비스 계정에 필요한 IAM 권한을 부여해야 합니다. 또는 데이터 액세스를 위해 커스텀 서비스 계정을 사용할 수 있습니다.
BigQuery에서 데이터를 읽고 쓰려면 서비스 계정에 다음 IAM 권한을 부여해야 합니다.
- BigQuery 테이블에 대한
bigquery.tables.*
권한 - 프로젝트에 대한
bigquery.readsessions.*
권한
roles/bigquery.admin
IAM 역할에는 서비스 계정이 BigQuery에서 데이터를 읽고 쓰는 데 필요한 권한이 포함되어 있습니다.- BigQuery 테이블에 대한
Cloud Storage에서 데이터를 읽고 쓰려면 서비스 계정에 Cloud Storage 객체에 대한
storage.objects.*
권한을 부여해야 합니다.roles/storage.objectAdmin
IAM 역할에는 서비스 계정이 Cloud Storage에서 데이터를 읽고 쓰는 데 필요한 권한이 포함되어 있습니다.연결을 만들 때 Dataproc Metastore를 지정한 경우 BigQuery가 메타스토어 구성에 대한 세부정보를 검색하려면 서비스 계정에 Dataproc Metastore에 대한
metastore.services.get
권한을 부여해야 합니다.사전 정의된
roles/metastore.metadataViewer
역할에는 서비스 계정이 메타스토어 구성에 대한 세부정보를 검색하는 데 필요한 권한이 포함되어 있습니다.또한 저장 프로시져가 Dataproc Metastore(
hive.metastore.warehouse.dir
)의 Hive 웨어하우스 디렉터리에 액세스할 수 있도록 서비스 계정에 Cloud Storage 버킷에 대한roles/storage.objectAdmin
역할을 부여해야 합니다. 저장 프로시져가 메타스토어에서 작업을 수행하는 경우 추가 권한을 부여해야 할 수 있습니다. Dataproc Metastore의 IAM 역할 및 권한에 대한 자세한 내용은 Dataproc Metastore 사전 정의된 역할 및 권한을 참조하세요.연결을 만들 때 Dataproc 영구 기록 서버를 지정하는 경우 서비스 계정에 다음 역할을 부여해야 합니다.
dataproc.clusters.get
권한을 포함하는 Dataproc 영구 기록 서버에 대한roles/dataproc.viewer
역할- Dataproc 영구 기록 서버를 만들 때
spark:spark.history.fs.logDirectory
속성에 지정하는 Cloud Storage 버킷에 대한roles/storage.objectAdmin
역할
자세한 내용은 Dataproc 영구 기록 서버와 Dataproc 역할 및 권한을 참조하세요.
사용자와 연결 공유
데이터를 쿼리하고 연결을 관리할 수 있도록 사용자에게 다음 역할을 부여할 수 있습니다.
roles/bigquery.connectionUser
: 사용자가 연결을 사용하여 외부 데이터 소스에 연결하고 쿼리를 실행할 수 있습니다.roles/bigquery.connectionAdmin
: 사용자가 연결을 관리할 수 있습니다.
BigQuery의 IAM 역할과 권한에 대한 자세한 내용은 사전 정의된 역할 및 권한을 참조하세요.
다음 옵션 중 하나를 선택합니다.
콘솔
BigQuery 페이지로 이동합니다.
이러한 연결은 프로젝트의 외부 연결 그룹에 나열됩니다.
탐색기 창에서 프로젝트 이름 > 외부 연결 > 연결을 클릭합니다.
세부정보 창에서 공유를 클릭하여 연결을 공유합니다. 다음 작업을 수행합니다.
연결 권한 대화상자에서 주 구성원을 추가하거나 수정하여 다른 주 구성원과 연결을 공유합니다.
저장을 클릭합니다.
bq
bq 명령줄 도구로 연결을 공유할 수 없습니다. 연결을 공유하려면 Google Cloud 콘솔 또는 BigQuery Connections API 메서드를 사용하여 연결을 공유합니다.
API
BigQuery 연결 REST API 참조 섹션의 projects.locations.connections.setIAM
메서드를 사용하고 policy
리소스의 인스턴스를 지정합니다.
Java
이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.
BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
다음 단계
- 다양한 연결 유형 알아보기
- 연결 관리 알아보기
- Apache Spark의 저장 프로시저 생성 방법 알아보기
- 저장 프로시저 관리 방법 알아보기