Google BigQuery에서 페더레이션 쿼리 실행
이 문서에서는 Azure Databricks에서 관리되지 않는 BigQuery 데이터에 대해 페더레이션된 쿼리를 실행하도록 Lakehouse Federation을 설정하는 방법을 설명합니다. Lakehouse Federation에 대한 자세한 내용은 Lakehouse Federation이란?을 참조하세요.
Lakehouse Federation을 사용하여 BigQuery 데이터베이스에 연결하려면 Azure Databricks Unity 카탈로그 메타스토어에서 다음을 만들어야 합니다.
- BigQuery 데이터베이스에 대한 연결.
- Unity 카탈로그에서 BigQuery 데이터베이스를 미러링하는 외부 카탈로그으로, 이를 통해 Unity 카탈로그 쿼리 구문과 데이터 거버넌스 도구를 사용하여 데이터베이스에 대한 Azure Databricks 사용자 액세스를 관리할 수 있습니다.
시작하기 전에
작업 영역 요구 사항
- Unity 카탈로그에 사용할 수 있는 작업 영역입니다.
컴퓨팅 요구 사항:
- Databricks 런타임 클러스터 또는 SQL 웨어하우스에서 대상 데이터베이스 시스템으로의 네트워크 연결. Lakehouse Federation에 대한 네트워킹 권장 사항을 참조하세요.
- Azure Databricks 클러스터는 Databricks Runtime 16.1 이상 및 공유 또는 단일 사용자 액세스 모드를 사용해야 합니다.
- SQL 웨어하우스는 프로 또는 서버리스여야 합니다.
권한 필요:
- 연결을 만들려면 메타스토어 관리자이거나 작업 영역에 연결된 Unity 카탈로그 메타스토어에 대한
CREATE CONNECTION
권한이 있는 사용자여야 합니다. - 외부 카탈로그를 만들려면 메타스토어에 대한
CREATE CATALOG
권한이 있어야 합니다. 또한, 연결의 소유자이거나 연결에 대한CREATE FOREIGN CATALOG
권한이 있어야 합니다.
추가 권한 요구 사항은 다음 각 태스크 기반 섹션에 지정됩니다.
연결 만들기
연결은 외부 데이터베이스 시스템에 액세스하기 위한 경로 및 자격 증명을 지정합니다. 연결을 만들려면 Azure Databricks Notebook 또는 Databricks SQL 쿼리 편집기에서 카탈로그 탐색기 또는 CREATE CONNECTION
SQL 명령을 사용할 수 있습니다.
참고 항목
Databricks REST API 또는 Databricks CLI를 사용하여 연결을 만들 수도 있습니다. POST /api/2.1/unity-catalog/connections 및 Unity Catalog 명령을 참조하십시오.
필요한 권한: 메타스토어 관리자 또는 CREATE CONNECTION
권한이 있는 사용자.
카탈로그 탐색기
Azure Databricks 작업 영역에서 카탈로그를 클릭합니다.
카탈로그 창 위쪽에서 아이콘을 클릭하고, 메뉴에서 연결 추가를 선택합니다.
또는 빠른 액세스 페이지에서 외부 데이터 > 단추를 클릭하고 연결 탭으로 이동한 다음 연결만들기를 클릭합니다.
연결 설정 마법사의 연결 기본 페이지에서 사용자가 쉽게 이해할 수 있는 연결 이름을 입력합니다.
Google BigQuery
연결 유형 선택한 다음클릭합니다. 인증 페이지에서 BigQuery 인스턴스에 대한 Google 서비스 계정 키 json 입력합니다.
BigQuery 프로젝트를 지정하고 인증을 제공하는 데 사용되는 원시 JSON 개체입니다. 이 JSON 개체를 생성하고 'KEYS' 아래 Google Cloud의 서비스 계정 세부 정보 페이지에서 다운로드할 수 있습니다. 서비스 계정에는 BigQuery 사용자 및 BigQuery 데이터 뷰어를 포함하여 BigQuery에서 적절한 권한이 부여되어야 합니다. 다음은 예시입니다.
{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "PRIVATE_KEY", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL", "universe_domain": "googleapis.com" }
(선택 사항) BigQuery 인스턴스에 대한 프로젝트 ID 입력합니다.
이 연결에서 실행되는 모든 쿼리에 대한 청구에 사용되는 BigQuery 프로젝트의 이름입니다. 기본적으로 서비스 계정의 프로젝트 ID로 설정됩니다.
(선택 사항) 주석을 입력합니다.
클릭하여 연결을 만듭니다.
카탈로그 기본 페이지에서 외부 카탈로그의 이름을 입력합니다. 외부 카탈로그는 외부 데이터 시스템의 데이터베이스를 미러링하므로 Azure Databricks 및 Unity 카탈로그를 사용하여 해당 데이터베이스의 데이터에 대한 액세스를 쿼리하고 관리할 수 있습니다.
(선택 사항) 연결 테스트를 클릭하여 작동 여부를 확인합니다.
클릭합니다. 카탈로그만들기.
Access 페이지에서 사용자가 만든 카탈로그에 액세스할 수 있는 작업 영역을 선택합니다. 모든 작업 영역에 접근할 수 있는 을 선택하거나 "작업 영역에 할당"을 클릭하고 작업 영역을 선택한 다음 을 클릭합니다.
모든 개체에 대한 액세스를 관리할 수 있는 카탈로그의 소유자 를으로 변경합니다. 텍스트 상자에 주체를 입력한 다음 반환된 결과에서 주체를 클릭합니다.
카탈로그에 권한을 부여하십시오. 부여를 클릭합니다.
- 카탈로그의 개체에 액세스할 수 있는 보안 주체 지정합니다. 텍스트 상자에 주체를 입력한 다음 반환된 결과에서 주체를 클릭합니다.
- 각 보안 주체에게 부여할 권한 사전 설정을 선택하십시오. 모든 계정 사용자에게는 기본적으로
BROWSE
부여됩니다.- 드롭다운 메뉴에서 데이터 판독기 선택하여 카탈로그의 개체에
read
권한을 부여합니다. - 드롭다운 메뉴에서 데이터 편집기 선택하여 카탈로그의 개체에
read
및modify
권한을 부여합니다. - 부여할 권한을 수동으로 선택합니다.
- 드롭다운 메뉴에서 데이터 판독기 선택하여 카탈로그의 개체에
- Grant을 클릭합니다.
다음클릭합니다.
메타데이터 페이지에서 태그의 키-값 쌍을 지정합니다. 자세한 내용은 Unity Catalog 보안 개체에 태그를 적용하는 방법인 을 참조하세요.
(선택 사항) 주석을 입력합니다.
저장을 클릭합니다.
SQL
Notebook 또는 Databricks SQL 쿼리 편집기에서 다음 명령을 실행합니다. BigQuery 프로젝트를 지정하고 인증을 제공하는 원시 JSON 개체로 <GoogleServiceAccountKeyJson>
을 바꿉니다. 이 JSON 개체를 생성하고 'KEYS' 아래 Google Cloud의 서비스 계정 세부 정보 페이지에서 다운로드할 수 있습니다. 서비스 계정에는 BigQuery 사용자 및 BigQuery 데이터 뷰어를 포함하여 BigQuery에서 적절한 권한이 부여되어야 합니다. JSON 객체의 예를 보려면 이 페이지에서 카탈로그 탐색기 탭을 확인하십시오.
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);
자격 증명과 같은 중요한 값에 일반 텍스트 문자열 대신 Azure Databricks 비밀 사용하는 것이 좋습니다. 예시:
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)
비밀 설정에 대한 자세한 내용은 비밀 관리를 참조하세요.
외국 카탈로그 만들기
참고 항목
UI를 사용하여 데이터 원본에 대한 연결을 만드는 경우 외세의 카탈로그 만들기가 포함되며 이 단계를 건너뛸 수 있습니다.
외부 카탈로그는 외부 데이터 시스템의 데이터베이스를 미러링하므로 Azure Databricks 및 Unity 카탈로그를 사용하여 해당 데이터베이스의 데이터에 대한 액세스를 쿼리하고 관리할 수 있습니다. 외국 카탈로그를 만들려면 이미 정의된 데이터 원본에 대한 연결을 사용합니다.
외국 카탈로그를 만들려면 Azure Databricks Notebook 또는 Databricks SQL 쿼리 편집기에서 카탈로그 탐색기 또는 CREATE FOREIGN CATALOG
사용할 수 있습니다. Databricks REST API 또는 Databricks CLI를 사용하여 카탈로그를 만들 수도 있습니다. 참조하세요: POST /api/2.1/unity-catalog/catalogs 또는 Unity Catalog 명령어.
필요한 권한: 메타스토어에 대한 CREATE CATALOG
권한과 연결에 대한 소유권 또는 연결에 대한 CREATE FOREIGN CATALOG
권한이 필요합니다.
카탈로그 탐색기
Azure Databricks 작업 영역에서 카탈로그.
카탈로그 패널 상단에서추가 또는 더하기 아이콘 아이콘을 클릭하고, 메뉴에서 카탈로그 추가를 선택합니다. 또는 빠른 액세스 페이지에서 카탈로그 단추를 클릭한 다음 카탈로그 만들기 단추를 클릭합니다.
(선택 사항) 다음 카탈로그 속성을 입력합니다.
데이터 프로젝트 ID: 이 카탈로그에 매핑될 데이터를 포함하는 BigQuery 프로젝트의 이름입니다. 기본적으로 연결 수준에서 설정된 청구 프로젝트 ID로 설정됩니다.
카탈로그 만들기에서 외국 카탈로그를 만드는 지침을 따르십시오.
SQL
Notebook 또는 Databricks SQL 편집기에서 다음 SQL 명령을 실행합니다. 괄호 안의 항목은 선택 사항입니다. 자리 표시자 값을 바꿉다.
-
<catalog-name>
: Azure Databricks에서 카탈로그의 이름입니다. -
<connection-name>
: 데이터 원본, 경로 및 액세스 자격 증명을 지정하는 연결 개체.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
지원되는 푸시다운
지원되는 푸시다운은 다음과 같습니다.
- 필터
- 프로젝션
- 한계
- 함수: 부분, 필터 식에만 해당합니다. (문자열 함수, 수학 함수, 데이터, 시간, 타임스탬프 함수 및 별칭, 캐스트, SortOrder와 같은 기타 함수)
- 집계
- 정렬, 제한과 함께 사용되는 경우
- 조인 기능 (Databricks Runtime 16.1 이상)
다음 푸시다운은 지원되지 않습니다.
- Windows 함수
데이터 형식 매핑
다음 표에서는 BigQuery에서 Spark로의 데이터 형식 매핑을 보여줍니다.
BigQuery 형식 | Spark 형식 |
---|---|
큰 숫자, 숫자 | 데시말타입 |
int64 | 롱타입 |
float64 | 더블타입 |
정렬, 지역, 간격, json, 문자열, 구조체 | VarcharType |
bytes | BinaryType |
bool | BooleanType |
date | DateType |
날짜/시간, 시간, 타임스탬프 | TimestampType/TimestampNTZType |
BigQuery에서 읽을 때 BigQuery Timestamp
는 TimestampType
인 경우 Spark preferTimestampNTZ = false
에 매핑됩니다(기본값). BigQuery Timestamp
는 TimestampNTZType
인 경우 preferTimestampNTZ = true
에 매핑됩니다.