Cloud Storage에서 데이터를 로드하는 방법 소개

이 페이지에서는 Cloud Storage에서 BigQuery로 데이터를 로드하는 방법을 간략히 설명합니다.

개요

Google Storage에서 BigQuery로 데이터를 로드할 때 허용되는 데이터 형식은 다음과 같습니다.

  • 쉼표로 구분된 값(CSV)
  • JSON(줄바꿈으로 구분)
  • Avro
  • Parquet
  • ORC
  • Cloud Datastore 내보내기
  • Cloud Firestore 내보내기

BigQuery Data Transfer Service는 Cloud Storage에서 BigQuery로 로드를 반복하는 기능을 지원합니다.

BigQuery는 다음 Cloud Storage 저장소 등급에서 데이터 로드를 지원합니다.

  • 다중 지역
  • 리전
  • Nearline
  • Coldline

위치 고려 사항

데이터 위치를 선택할 때는 다음 사항을 고려해야 합니다.

  • 데이터 로드용 Cloud Storage 버킷을 같은 위치에 배치합니다.
    • BigQuery 데이터세트가 멀티 리전 위치에 있는 경우 로드하는 데이터가 포함된 Cloud Storage 버킷은 같은 위치의 리전이나 멀티 리전 버킷에 있어야 합니다. 예를 들어 BigQuery 데이터세트가 EU에 있으면 Cloud Storage 버킷은 EU 내 리전 또는 멀티 리전 버킷에 있어야 합니다.
    • 데이터세트가 지역 위치에 있는 경우, Cloud Storage 버킷은 같은 위치의 지역 버킷에 있어야 합니다. 예를 들어, 데이터세트가 도쿄 지역에 있으면 Cloud Storage 버킷은 도쿄 내 지역 버킷에 있어야 합니다.
    • 예외: 데이터세트가 US 다중 리전 위치에 있는 경우 모든 리전 내 또는 다중 리전 위치에 있는 Cloud Storage 버킷에서 데이터를 로드할 수 있습니다.
  • 데이터 관리 계획을 세웁니다.
    • BigQuery 데이터세트 또는 Cloud Storage 버킷과 같은 리전 내 스토리지 리소스를 선택한 경우 데이터를 지리적으로 관리하기 위한 계획을 세웁니다.

Cloud Storage 위치에 대한 자세한 내용은 Cloud Storage 문서의 버킷 위치를 참조하세요.

다른 위치 간 BigQuery 데이터 이동

데이터세트가 생성된 후에는 데이터세트 위치를 변경할 수 없지만 데이터세트를 복사할 수 있습니다. 한 위치에서 다른 위치로 데이터세트를 옮길 수 없지만 수동으로 옮길(다시 만들) 수 있습니다.

데이터세트 복사

리전 간 복사를 비롯하여 데이터세트를 복사하는 단계를 알아보려면 데이터세트 복사를 참조하세요.

데이터세트 이동

데이터세트를 수동으로 한 위치에서 다른 위치로 옮기려면 다음 절차를 따르세요.

  1. 데이터세트와 같은 위치에 있는 리전 또는 멀티 리전 Cloud Storage 버킷으로 BigQuery 테이블의 데이터를 내보냅니다. 예를 들어 데이터가 EU 멀티 리전 위치에 있으면 EU 내 리전 또는 멀티 리전 버킷으로 데이터를 내보냅니다.

    BigQuery에서 데이터를 내보내는 경우에는 요금이 청구되지 않지만 Cloud Storage에 내보낸 데이터를 저장하는 경우에는 요금이 청구됩니다. BigQuery 내보내기에는 내보내기 작업의 제한사항이 적용됩니다.

  2. Cloud Storage 버킷의 데이터를 새 위치의 리전 또는 멀티 리전 버킷으로 복사하거나 옮깁니다. 예를 들어 US 멀티 리전 위치의 데이터를 도쿄 리전 위치로 이동할 경우 데이터를 도쿄 내 리전 버킷으로 전송합니다. Cloud Storage 객체 전송에 대한 자세한 내용은 Cloud Storage 문서의 객체 이름 바꾸기, 복사, 이동을 참조하세요.

    리전 간에 데이터를 전송하면 Cloud Storage에 네트워크 이그레스 요금이 청구됩니다.

  3. 새 위치의 Cloud Storage 버킷으로 데이터를 전송한 후 새 위치에서 새 BigQuery 데이터세트를 만듭니다. 그런 다음 Cloud Storage 버킷의 데이터를 BigQuery로 로드합니다.

    BigQuery로 데이터를 로드하는 경우에는 요금이 청구되지 않지만 데이터 또는 버킷을 삭제하기 전에 Cloud Storage에 데이터를 저장하면 요금이 청구됩니다. 데이터를 로드한 후 BigQuery에 데이터를 저장하는 경우에도 요금이 청구됩니다. BigQuery에 데이터를 로드하면 로드 작업의 제한사항이 적용됩니다.

Cloud Storage를 사용하여 대규모 데이터세트를 저장 및 이동하는 방법에 대한 자세한 내용은 빅데이터에 Cloud Storage 사용을 참조하세요.

제한사항

Cloud Storage 버킷에서 BigQuery로 데이터를 로드할 때는 다음과 같은 제한사항이 적용됩니다.

  • 데이터세트 위치가 US 이외의 값으로 설정된 경우, 지역별 또는 다중 지역 Cloud Storage 버킷은 데이터세트와 동일한 지역에 있어야 합니다.

Cloud Storage 소스 데이터의 형식에 따라 추가 제한사항이 적용될 수 있습니다. 자세한 내용은 다음을 참조하세요.

Cloud Storage URI 검색

Cloud Storage 데이터 소스에서 데이터를 로드하려면 Cloud Storage URI를 제공해야 합니다.

Cloud Storage URI는 버킷 이름과 객체(파일 이름)로 구성됩니다. 예를 들어 Cloud Storage 버킷 이름이 mybucket이고 데이터 파일 이름이 myfile.csv라면 버킷 URI는 gs://mybucket/myfile.csv가 됩니다. 데이터가 파일 여러 개로 구분되어 있으면 URI에 와일드 카드를 사용할 수 있습니다. 자세한 내용은 Cloud Storage 요청 URI를 참조하세요.

BigQuery는 처음 이중 슬래시 다음에 슬래시 여러 개가 연속으로 포함된 소스 URI를 지원하지 않습니다. Cloud Storage 객체 이름에는 연속된 슬래시('/') 문자 여러 개가 포함될 수 있습니다. 하지만 BigQuery는 연속된 슬래시 여러 개를 단일 슬래시로 변환합니다. 예를 들어 소스 URI gs://bucket/my//object//name은 Cloud Storage에서는 유효하지만 BigQuery에서는 작동하지 않습니다.

Cloud Storage URI를 가져오려면 다음 안내를 따르세요.

  1. Cloud Storage 콘솔을 엽니다.

    Cloud Storage 콘솔

  2. 소스 데이터가 포함된 객체(파일) 위치로 이동합니다.

  3. Cloud Storage Console 맨 위에서 객체 경로를 확인합니다. gs://bucket/file을 적절한 경로로 바꿔 URI를 만듭니다(예: gs://mybucket/myfile.json). bucket은 Cloud Storage 버킷 이름이고 file은 데이터가 포함된 객체(파일)의 이름입니다.

필수 권한

BigQuery에 데이터를 로드할 때는 로드 작업을 실행할 수 있는 권한과 새로운 또는 기존 BigQuery 테이블 및 파티션에 데이터를 로드할 수 있는 권한이 필요합니다. Cloud Storage에서 데이터를 로드할 경우 데이터가 포함된 버킷에 대한 액세스 권한도 필요합니다.

BigQuery 권한

BigQuery에 데이터를 로드하려면 최소한 다음 권한이 필요합니다. 이러한 권한은 새로운 테이블 또는 파티션에 데이터를 로드할 때나 테이블 또는 파티션을 추가하거나 덮어쓸 때 필요합니다.

  • bigquery.tables.create
  • bigquery.tables.updateData
  • bigquery.jobs.create

다음과 같은 사전 정의된 Cloud IAM 역할에는 bigquery.tables.create 권한과 bigquery.tables.updateData 권한이 모두 있습니다.

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

다음과 같은 사전 정의된 IAM 역할에는 bigquery.jobs.create 권한이 있습니다.

  • bigquery.user
  • bigquery.jobUser
  • bigquery.admin

또한 사용자에게 bigquery.datasets.create 권한이 있으면 사용자가 데이터세트를 만들 때 이에 대한 bigquery.dataOwner 액세스 권한이 부여됩니다. bigquery.dataOwner 액세스 권한이 있으면 사용자는 로드 작업을 통해 데이터세트에서 테이블을 만들고 업데이트할 수 있습니다.

BigQuery의 Cloud IAM 역할과 권한에 대한 자세한 내용은 액세스 제어를 참조하세요.

Cloud Storage 권한

Cloud Storage 버킷에서 데이터를 로드하려면 storage.objects.get 권한을 부여받아야 합니다. URI 와일드 카드를 사용할 경우에는 storage.objects.list 권한도 있어야 합니다.

사전 정의된 Cloud IAM 역할 storage.objectViewer가 부여되면 storage.objects.get 권한과 storage.objects.list 권한이 모두 제공됩니다.

Cloud Storage 액세스 및 스토리지 로그

Cloud Storage는 분석할 수 있도록 BigQuery로 직접 가져올 수 있는 CSV 형식의 액세스 및 스토리지 로그 파일을 제공합니다. Cloud Storage 로그를 로드 및 분석하는 방법에 대한 자세한 내용은 Cloud Storage 문서의 액세스 로그 및 스토리지 로그를 참조하세요.

Cloud Storage URI의 와일드 카드 지원

Cloud Storage 데이터가 공통 기본 이름을 공유하는 파일 여러 개로 구분되어 있는 경우 데이터를 로드할 때 URI에 와일드 카드를 사용할 수 있습니다.

Cloud Storage URI에 와일드 카드를 추가하려면 기본 이름에 별표(*)를 추가합니다. 예를 들어 fed-sample000001.csvfed-sample000002.csv라는 파일 두 개가 있다면 버킷 URI는 gs://mybucket/fed-sample*이 됩니다. 그러면 이 와일드 카드 URI를 Console, 기본 웹 UI, CLI, API 또는 클라이언트 라이브러리에서 사용할 수 있습니다.

버킷 내 객체(파일 이름)에 와일드 카드 한 개만 사용할 수 있습니다. 와일드 카드는 객체 이름 중간이나 끝에 입력할 수 있습니다. 버킷 이름에 와일드 카드를 추가할 수 없습니다.

Google Cloud Datastore 내보내기의 경우 URI 하나만 지정할 수 있으며 .backup_info 또는 .export_metadata로 끝나야 합니다.

다음과 같은 경우에는 * 와일드 카드 문자가 허용되지 않습니다.

  • Cloud Datastore 또는 Cloud Firestore 내보내기에 연결된 외부 테이블을 만드는 경우
  • Cloud Storage에서 Cloud Datastore 또는 Cloud Firestore 내보내기 데이터를 로드하는 경우

다음 단계

데이터 형식별로 해당 문서를 참조하여 Cloud Storage에서 BigQuery로 데이터를 로드하는 방법을 알아보세요.

Cloud Storage에서 BigQuery로 로드를 반복하는 방법을 알아보려면 Cloud Storage 전송을 참조하세요.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.