Cloud Storage 데이터 검색 및 카탈로그화
이 문서에서는 Cloud Storage 데이터의 자동 검색을 사용하는 방법을 설명합니다.
Dataplex 자동 검색은 Cloud Storage 버킷의 데이터를 스캔하여 메타데이터를 추출하고 카탈로그화할 수 있는 BigQuery의 기능입니다. 스캔의 일환으로 자동 검색은 정형 데이터의 경우 BigLake 또는 외부 테이블을, 비정형 데이터의 경우 객체 테이블을 생성하며, 이를 분석 및 AI에 사용할 수 있습니다. 테이블은 Dataplex 카탈로그에 자동으로 카탈로그화되며 이를 검색하거나 둘러볼 수 있습니다.
Cloud Storage 데이터의 자동 검색을 사용하려면 검색 검사를 만들고 실행합니다.
개요
검색 스캔은 다음을 실행합니다.
- Cloud Storage 버킷 또는 경로의 데이터를 스캔합니다.
- 정형 및 반정형 파일을 테이블로 그룹화합니다.
- 테이블 이름, 스키마, 파티션 정의와 같은 메타데이터를 수집합니다.
- 스키마 및 파티션 정의를 사용하여 BigQuery에서 BigLake, 외부 또는 객체 테이블을 만들고 업데이트합니다.
이미지 및 동영상과 같은 비정형 데이터의 경우 검색 스캔은 BigLake 객체 테이블과 동일한 미디어 유형을 공유하는 파일 그룹을 감지하고 등록합니다. 예를 들어 gs://images/group1
에 GIF 이미지가 포함되어 있고 gs://images/group2
에 JPEG 이미지가 포함되어 있으면 검색 스캔에서 두 개의 파일 세트를 감지하고 등록합니다.
Avro와 같은 구조화된 데이터의 경우 검색 스캔은 파일 그룹을 BigLake 외부 테이블로 등록하고 동일한 데이터 형식과 호환되는 스키마가 포함된 폴더에 있는 경우에만 파일을 감지합니다.
검색 스캔은 다음과 같은 정형 데이터 및 비정형 데이터 형식을 지원합니다.
- Parquet
- Avro
- ORC
- JSON(줄바꿈으로 구분된 형식만)
- CSV (주석 행이 있는 CSV 파일은 제외)
검색 검사는 구조화된 데이터 및 반구조화된 데이터에 대해 다음과 같은 압축 형식을 지원합니다.
다음 형식에 대한 내부 압축:
압축 파일 확장자 샘플 지원되는 형식 gzip .gz.parquet
Parquet LZ4 .lz4.parquet
Parquet Snappy .snappy.parquet
Parquet, ORC, Avro LZO .lzo.parquet
Parquet, ORC JSON 및 CSV 파일의 외부 압축:
- gzip
- bzip2
검색된 테이블은 BigQuery에 BigLake 외부 테이블, BigLake 객체 테이블 또는 외부 테이블로 등록됩니다. 이렇게 하면 BigQuery에서 데이터를 분석할 수 있습니다. BigLake 테이블 및 객체 테이블의 메타데이터 캐싱도 사용 설정됩니다. 모든 BigLake 테이블은 검색 및 탐색을 위해 Dataplex 카탈로그에 자동으로 처리됩니다.
시작하기 전에
이 문서의 작업을 수행하는 데 필요한 Identity and Access Management (IAM) 권한이 있는지 확인합니다.
서비스 계정에 필요한 역할
시작하기 전에 프로젝트의 Dataplex 서비스 계정에 IAM 권한을 할당합니다.
service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com
PROJECT_NUMBER
를 Dataplex API가 사용 설정된 프로젝트로 바꿉니다.
Dataplex 서비스 계정에 검색 스캔을 실행하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Dataplex 서비스 계정에 다음 IAM 역할을 부여해 달라고 요청하세요.
-
데이터 소스 프로젝트의 BigQuery 사용자 (
roles/bigquery.user
) -
데이터 소스 버킷의 스토리지 객체 뷰어 (
roles/storage.objectViewer
) -
연결 제공:
BigQuery 연결 관리자 (
roles/bigquery.connectionAdmin
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 디스커버리 스캔을 실행하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
검색 스캔을 실행하려면 다음 권한이 필요합니다.
-
데이터 소스 프로젝트에 대한
bigquery.datasets.create
권한 -
데이터 소스 버킷에 대한
storage.buckets.get
-
데이터 소스 버킷에 대한
storage.objects.get
-
데이터 소스 버킷에 대한
storage.objects.list
-
데이터 소스 프로젝트에 대한
bigquery.datasets.get
권한 -
연결을 제공합니다.
-
bigquery.connections.delegate
-
bigquery.connections.use
-
관리자는 커스텀 역할이나 다른 사전 정의된 역할을 사용하여 Dataplex 서비스 계정에 이러한 권한을 부여할 수도 있습니다.
최종 사용자의 필수 역할
DataScan API를 사용하는 데 필요한 권한을 보유하려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
DataScan 리소스에 대한 전체 액세스 권한:
프로젝트의 Dataplex DataScan 관리자 (
roles/dataplex.dataScanAdmin
) -
DataScan 리소스에 대한 쓰기 액세스 권한:
프로젝트의 Dataplex DataScan 편집자 (
roles/dataplex.dataScanEditor
) -
결과를 제외한 DataScan 리소스에 대한 읽기 액세스 권한:
프로젝트의 Dataplex DataScan 뷰어 (
roles/dataplex.dataScanViewer
) -
결과를 포함한 DataScan 리소스에 대한 읽기 액세스 권한:
프로젝트의 Dataplex DataScan DataViewer (
roles/dataplex.dataScanDataViewer
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 DataScan API를 사용하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
DataScan API를 사용하려면 다음 권한이 필요합니다.
-
프로젝트에서 DataScan 만들기:
dataplex.datascans.create
-
DataScan 삭제: 프로젝트 또는 DataScan 리소스에 대한
dataplex.datascans.delete
-
결과를 제외한 DataScan 세부정보 보기: Proyector의 DataScan 리소스에서
dataplex.datascans.get
-
결과를 포함한 DataScan 세부정보 보기: 프로젝트 또는 DataScan 리소스에서
dataplex.datascans.getData
-
DataScans 나열: 프로젝트 또는 DataScan 리소스에서
dataplex.datascans.list
-
DataScan 실행: 프로젝트 또는 DataScan 리소스에서
dataplex.datascans.run
-
DataScan 설명 업데이트: Proyector의 DataScan 리소스에서
dataplex.datascans.update
-
DataScan의 IAM 권한 보기: 프로젝트 또는 DataScan 리소스에서
dataplex.datascans.getIamPolicy
-
DataScan에서 IAM 권한을 설정합니다.
dataplex.datascans.setIamPolicy
프로젝트 또는 DataScan 리소스
관리자는 커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이러한 권한을 부여할 수도 있습니다.
탐색 스캔 만들기
데이터를 검색하려면 검색 스캔을 만들어 실행해야 합니다. 스캔 일정을 설정하거나 요청 시 스캔을 실행할 수 있습니다. 검색 스캔을 만들고 실행하려면 dataplex.datascans.create
권한이 있어야 합니다.
검색 스캔이 실행되면 스캔된 Cloud Storage 버킷에 해당하는 새 데이터 세트가 BigQuery에 생성됩니다. BigQuery 데이터 세트 이름은 Cloud Storage 버킷 이름과 동일합니다. 버킷 이름에 잘못된 문자가 있으면 밑줄로 대체됩니다. 데이터 세트 이름을 사용할 수 없는 경우 접미사가 추가됩니다 (예: _discovered_001
). 데이터 세트에는 추가 분석을 위해 탐색 스캔에서 만든 BigLake 외부 또는 BigLake 외부 테이블이 포함됩니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색기에서
추가를 클릭합니다.인기 소스 섹션의 추가 창에서 GCS에서 외부 및 BigLake 테이블 자동 생성을 클릭합니다.
소스 섹션의 테이블 만들기 창에서 스캔할 데이터에 관한 다음 세부정보를 구성합니다.
- 검사의 이름을 입력합니다.
- 스캔 ID 필드에 리소스 이름 지정 규칙에 따라 고유 ID를 입력합니다. ID를 제공하지 않으면 검색 스캔에서 스캔 ID를 생성합니다.
- 선택사항: 검사에 대한 설명을 입력합니다.
- 스캔할 파일이 포함된 Cloud Storage 버킷을 지정하려면 버킷 필드에서 버킷을 찾아 선택합니다.
선택사항: glob 패턴 목록을 제공하여 검색 스캔에 포함하거나 제외할 데이터를 정의합니다.
- Include: 데이터의 하위 집합만 스캔해야 하는 경우 포함할 객체와 일치하는 글러브 패턴 목록을 제공합니다.
- 제외: 제외할 객체와 일치하는 glob 패턴 목록을 제공합니다.
예를 들어 검색 스캔에서
gs://test_bucket/foo/..
를 제외하려면 제외 경로로**/foo/*
를 입력합니다. 따옴표는 오류를 발생시키므로"**/foo/*"
대신**/foo/*
를 입력해야 합니다.포함 패턴과 제외 패턴을 모두 제공하는 경우 제외 패턴이 먼저 적용됩니다.
스캔된 데이터에서 BigLake 테이블을 만들려면 연결 ID 필드에 Google Cloud 리소스 연결 ID를 입력합니다. 자세한 내용은 Google Cloud 리소스 연결을 참고하세요.
리소스 연결 ID를 제공하지 않으면 검색 스캔에서 BigLake 외부 테이블이 아닌 테이블을 만듭니다.
탐색 빈도 섹션에서 탐색 스캔을 실행할 시기를 구성합니다.
반복: 사전 정의된 일정에 따라 스캔이 실행됩니다. 시작 시간, 스캔 실행 일수, 빈도(예: 시간당)를 입력합니다.
주문형: 스캔이 주문형으로 실행됩니다.
선택사항: JSON 또는 CSV 사양 섹션에서 스캔이 JSON 및 CSV 파일을 처리하는 방법을 지정합니다. JSON 또는 CSV 사양을 클릭합니다.
- JSON 옵션을 구성하려면 JSON 파싱 옵션 사용 설정을 선택합니다.
- 유형 추론 사용 중지: 데이터를 스캔할 때 검색 스캔에서 데이터 유형을 추론해야 하는지 여부입니다. JSON 데이터의 유형 추론을 사용 중지하면 모든 열이 문자열, 숫자, 불리언과 같은 기본 유형으로 등록됩니다.
- 인코딩 형식: UTF-8, US-ASCII, ISO-8859-1과 같은 데이터의 문자 인코딩입니다. 값을 지정하지 않으면 UTF-8이 기본값으로 사용됩니다.
- CSV 옵션을 구성하려면 CSV 파싱 옵션 사용 설정을 선택합니다.
- 유형 추론 사용 중지: 데이터를 스캔할 때 검색 스캔에서 데이터 유형을 추론해야 하는지 여부입니다. CSV 데이터의 유형 추론을 사용 중지하면 모든 열이 문자열로 등록됩니다.
- Header rows: 헤더 행 수입니다(
0
또는1
).0
값을 지정하면 디스커버리 스캔이 제목을 추론하고 파일에서 열 이름을 추출합니다. 기본값은0
입니다. - 열 구분 기호 문자: 값을 구분하는 데 사용되는 문자입니다. 단일 문자
\r
(캐리지 리턴) 또는\n
(줄바꿈)을 제공합니다. 기본값은 쉼표 (,
)입니다. - 인코딩 형식: 데이터의 문자 인코딩입니다(예:
UTF-8
,US-ASCII
,ISO-8859-1
). 값을 지정하지 않으면 UTF-8이 기본값으로 사용됩니다.
- JSON 옵션을 구성하려면 JSON 파싱 옵션 사용 설정을 선택합니다.
데이터 검색 스캔 구성을 완료하면 예약된 스캔의 경우 만들기를, 주문형 스캔의 경우 지금 실행을 클릭합니다.
예약된 스캔은 설정한 일정에 따라 실행됩니다.
주문형 스캔은 처음 만들 때 한 번 실행되며 언제든지 스캔을 실행할 수 있습니다. 검사가 실행되는 데 몇 분 정도 걸릴 수 있습니다.
REST
검색 스캔을 만들려면 dataScans.create
메서드를 사용합니다.
검색 스캔 모니터링
검색 스캔의 결과를 모니터링하려면 스캔이 실행될 때 생성된 로그를 쿼리하면 됩니다.
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
로그 탐색기 보기에서 쿼리 탭을 찾습니다.
리소스 메뉴를 클릭합니다.
Cloud Dataplex DataScan를 선택하고 적용을 클릭합니다.
로그 이름 메뉴를 클릭합니다.
로그 이름 검색 필드에
dataplex.googleapis.com%2Fdata_scan
을 입력합니다. data_scan을 선택하고 적용을 클릭합니다.선택사항: 로그 쿼리에 다음 필터를 추가하여 특정 데이터 스캔 ID 또는 위치로 로그를 필터링합니다.
resource.type="dataplex.googleapis.com/DataScan" AND resource.labels.resource_container="projects/PROJECT_ID" AND resource.labels.datascan_id="DATA_SCAN_ID"
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트 ID입니다.DATA_SCAN_ID
: DataScan ID
쿼리 실행을 클릭합니다.
REST
검색 스캔을 모니터링하려면 dataScans.get
메서드를 사용합니다.
게시된 BigLake 테이블 쿼리
검색 스캔을 실행하면 BigLake 테이블이 BigQuery의 새 데이터 세트에 게시되며 BigQuery에서 SQL을 사용하거나 Dataproc에서 Apache Spark 또는 Dataproc 또는 HiveQL을 사용하여 분석할 수 있습니다.
SQL을 사용하여 쿼리
BigQuery에서 테이블을 보거나 쿼리할 수 있습니다. BigQuery에서 쿼리를 실행하는 방법에 관한 자세한 내용은 쿼리 실행을 참고하세요.
Apache Spark를 사용한 쿼리
Dataproc 서버리스 작업에서 Spark SQL을 사용하여 BigLake 테이블을 쿼리하려면 다음 단계를 따르세요.
다음 샘플 스크립트와 유사한 PySpark 스크립트를 만듭니다.
from pyspark.sql import SparkSession session = ( SparkSession.builder.appName("testing") .config("viewsEnabled","true") .config("materializationDataset", "DATASET_ID") .config("spark.hive.metastore.bigquery.project.id", "PROJECT_ID") .config("spark.hive.metastore.client.factory.class", "com.google.cloud.bigquery.metastore.client.BigQueryMetastoreClientFactory") .enableHiveSupport() .getOrCreate() ) session.sql("show databases").show() session.sql("use TABLE_NAME").show() session.sql("show tables").show() sql = "SELECT * FROM DATASET_ID.TABLE_ID LIMIT 10" df = session.read.format("bigquery").option("dataset", "DATASET_ID").load(sql) df.show()
다음을 바꿉니다.
DATASET_ID
: 사용자에게 생성 권한이 있는 데이터 세트의 ID입니다.PROJECT_ID
: BigLake 테이블이 있는 프로젝트의 IDTABLE_NAME
: BigLake 테이블 이름TABLE_ID
: BigLake 테이블의 ID
게시된 BigLake 테이블 관리
게시된 BigLake 테이블은 검색 스캔에 의해 BigQuery에 생성됩니다. metadata-managed-mode 라벨이 user_managed
로 설정되지 않으면 탐색 스캔이 게시된 BigLake 테이블을 관리합니다. 탐색 스캔은 예약된 DataScan 또는 주문형 DataScan이 실행될 때마다 새 데이터 탐색, 스키마 추론, 스키마 진화를 처리합니다.
게시된 BigLake 테이블 업데이트
기본 구성으로 검색 스캔 작업을 사용하여 게시된 BigLake 테이블의 경우 스키마 및 기타 메타데이터는 예약된 빈도로 실행되는 모든 데이터 스캔 작업과 함께 자동으로 업데이트됩니다.
게시된 BigLake 테이블을 업데이트하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색기 창에서 프로젝트와 데이터 세트를 펼친 후 테이블을 선택합니다.
세부정보 창의 라벨 섹션에서 metadata-managed-mode가
user_managed
로 설정되어 있는지 확인합니다. 다른 값으로 설정된 경우 다음 단계를 따르세요.세부정보 수정을 클릭합니다.
metadata-managed-mode 키 옆의 value 필드에
user_managed
를 입력합니다.
업데이트된 스키마가 있는 테이블을 SQL 및 Spark 쿼리에 사용할 수 있습니다. 다음 검색 스캔이 실행되면 테이블 메타데이터는 변경되지 않습니다.
게시된 BigLake 테이블 삭제
게시된 BigLake 테이블을 삭제하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색기 창에서 프로젝트와 데이터 세트를 펼친 후 테이블을 선택합니다.
세부정보 창의 라벨 섹션에서 metadata-managed-mode 라벨이
user_managed
로 설정되어 있지 않은지 확인합니다.user_managed
로 설정된 경우 다음 단계를 따르세요.세부정보 수정
을 클릭합니다.metadata-managed-mode 키 옆의 value 필드에
user_managed
가 아닌 값을 입력합니다.
실행을 클릭합니다. 검색 스캔은 주문형으로 실행됩니다.
검색 스캔이 실행되면 BigLake 테이블이 BigQuery에서 삭제되며 Spark를 통해 나열하거나 쿼리할 수 없습니다.
주문형으로 검색 스캔 실행
필요에 따라 검색 검사를 실행하려면 Dataplex API에서 dataScans.run
메서드를 사용하세요.
탐색 스캔 나열
프로젝트의 스캔 목록을 검색하려면 Dataplex API에서 dataScans.list
메서드를 사용합니다.
탐색 스캔 업데이트
예를 들어 스캔 일정을 주문형에서 반복으로 변경하는 등 스캔 일정을 변경하려면 DataScan을 업데이트해야 합니다.
검색 스캔을 업데이트하려면 Dataplex API의 dataScans.patch
메서드를 사용합니다.
탐색 스캔 삭제
검색 스캔을 삭제하려면 Dataplex API에서 dataScans.delete
메서드를 사용합니다.