Apache Iceberg용 BigQuery 테이블
프리뷰 중에 지원을 받으려면 bigquery-tables-for-apache-iceberg-help@google.com으로 이메일을 보내세요.
Apache Iceberg용 BigQuery 테이블(이하 Iceberg 테이블)은 Google Cloud에서 개방형 형식의 레이크하우스를 빌드하기 위한 기반을 제공합니다. Iceberg 테이블은 BigQuery 테이블과 동일한 완전 관리형 환경을 제공하지만, Parquet을 사용하여 고객 소유 스토리지 버킷에 데이터를 저장하여 Iceberg 개방형 테이블 형식과 상호 운용할 수 있습니다.
Apache Iceberg용 BigQuery 테이블만 BigQuery 내에서 직접 수정할 수 있으므로 Apache Iceberg용 BigQuery 테이블은 Apache Iceberg용 BigLake 외부 테이블과 다릅니다. Apache Iceberg용 BigLake 외부 테이블은 Apache Spark와 같은 다른 쿼리 엔진에서 생성된 읽기 전용 테이블이며 BigQuery를 사용하여만 쿼리할 수 있습니다.
Iceberg 테이블은 다음 기능을 지원합니다.
- GoogleSQL DML을 사용하는 테이블 변형
- Spark, Dataflow, 기타 엔진과 같은 BigLake 커넥터를 통해 Storage Write API를 사용하여 통합 일괄 처리 및 높은 처리량 스트리밍
- 스키마 혁신: 필요에 따라 열을 추가, 삭제, 이름을 바꿀 수 있습니다. 이 기능을 사용하면 기존 열의 데이터 유형과 열 모드도 변경할 수 있습니다. 자세한 내용은 유형 변환 규칙을 참조하세요.
- 적응형 파일 크기 조정, 자동 클러스터링, 가비지 컬렉션, 메타데이터 최적화를 비롯한 자동 스토리지 최적화
- 열 수준 보안 및 데이터 마스킹
아키텍처
Iceberg 테이블은 자체 클라우드 버킷에 있는 테이블에 BigQuery 리소스 관리의 편리성을 제공합니다. Iceberg 테이블을 사용하면 제어하는 버킷에서 데이터를 이동하지 않고도 이러한 테이블에서 BigQuery를 사용할 수 있습니다.
다음 다이어그램은 관리형 테이블 아키텍처를 대략적으로 보여줍니다.
이 테이블 관리는 버킷에 다음과 같은 영향을 미칩니다.
- BigQuery는 쓰기 요청 및 DML 문, 스트리밍과 같은 백그라운드 스토리지 최적화에 응답하여 버킷에 새 데이터 파일을 만듭니다.
- BigQuery에서 관리형 테이블을 삭제해도 BigQuery에서는 연결된 데이터 파일을 삭제하지 않습니다. 버킷에서 파일과 내보낸 테이블 메타데이터를 수동으로 삭제하여 삭제를 확인해야 합니다.
- Iceberg 테이블에는 BigQuery 스토리지 비용이 발생하지 않습니다. 자세한 내용은 결제를 참조하세요.
Iceberg 테이블을 만드는 방법은 BigQuery 테이블을 만드는 방법과 유사합니다. Cloud Storage에 개방형 형식으로 데이터를 저장하므로 다음과 같은 옵션이 더 많습니다.
WITH CONNECTION
을 사용하여 Cloud 리소스 연결을 지정하여 BigLake가 Cloud Storage에 액세스할 수 있는 연결 사용자 인증 정보를 구성합니다.file_format
을 사용하여 데이터 스토리지의 파일 형식을 지정합니다.PARQUET
는 프리뷰에서 지원됩니다.table_format
을 사용하여 오픈소스 메타데이터 테이블 형식을 지정합니다.ICEBERG
는 프리뷰에서 지원됩니다.
권장사항
BigQuery 외부에서 버킷을 직접 변경하거나 파일을 추가하면 데이터 손실 또는 복구할 수 없는 오류가 발생할 수 있습니다. 다음 표에는 가능한 시나리오가 설명되어 있습니다.
작업 | 결과 | 예방 방법 |
---|---|---|
BigQuery 외부의 버킷에 새 파일을 추가합니다. | 데이터 손실: BigQuery 외부에 추가된 새 파일 또는 객체는 BigQuery에서 추적하지 않습니다. 추적되지 않은 파일은 백그라운드 가비지 컬렉션 프로세스에 의해 삭제됩니다. | BigQuery를 통해서만 데이터를 추가합니다. 이렇게 하면 BigQuery에서 파일을 추적하고 가비지 컬렉션을 방지할 수 있습니다. 실수로 추가 및 데이터 손실을 방지하려면 Iceberg 테이블이 포함된 버킷에서 외부 도구 쓰기 권한을 제한하는 것이 좋습니다. |
비어 있지 않은 프리픽스에 새 Iceberg 테이블을 만듭니다. | 데이터 손실: 기존 데이터는 BigQuery에서 추적하지 않으므로 이러한 파일은 추적되지 않는 것으로 간주되어 백그라운드 가비지 컬렉션 프로세스에 의해 삭제됩니다. | 빈 프리픽스에서만 새 Iceberg 테이블을 만듭니다. |
Iceberg 테이블 데이터 파일을 수정하거나 교체합니다. | 데이터 손실: 외부에서 수정하거나 교체하면 테이블이 일관성 검사를 통과하지 못하여 읽을 수 없게 됩니다. 테이블에 대한 쿼리가 실패합니다. 이 시점에서는 셀프 서비스로 복구할 수 없습니다. 데이터 복구 지원을 받으려면 지원팀에 문의하세요. |
BigQuery를 통해서만 데이터를 수정합니다. 이렇게 하면 BigQuery에서 파일을 추적하고 가비지 컬렉션을 방지할 수 있습니다. 실수로 추가 및 데이터 손실을 방지하려면 Iceberg 테이블이 포함된 버킷에서 외부 도구 쓰기 권한을 제한하는 것이 좋습니다. |
동일하거나 중복되는 URI에 Apache Iceberg용 BigQuery 테이블 2개를 만듭니다. | 데이터 손실: BigQuery는 Iceberg 테이블의 동일한 URI 인스턴스를 브리징하지 않습니다. 각 테이블의 백그라운드 가비지 컬렉션 프로세스는 반대 테이블의 파일을 추적되지 않은 것으로 간주하고 삭제하여 데이터 손실이 발생합니다. | 각 Iceberg 테이블에 고유한 URI를 사용합니다. |
위치 고려사항
멀티 리전 버킷 대신에 Cloud Storage 단일 리전 또는 이중 리전 버킷을 사용하여 성능을 개선할 수 있습니다.
청구
다음 기능은 기존에 게시된 가격을 사용하여 요금이 청구됩니다.
- Cloud Storage 버킷에 저장된 모든 데이터, Cloud Storage에서 실행되는 데이터 처리, 버킷에서 읽은 데이터 양에 대한 네트워크 사용량에 대한 Cloud Storage 가격 책정
- 쿼리, DML, 백그라운드 스토리지 최적화(클러스터링, 병합, 가비지 컬렉션 포함)에 대한 BigQuery 컴퓨팅 가격 책정
- 예약(슬롯)을 사용하는 요금은 기존 슬롯 가격을 따릅니다.
- 주문형 재고 관리 단위(SKU)를 사용하는 요금은 기존 주문형 가격 책정을 따릅니다. 자세한 내용은 BigLake 비용을 참조하세요.
- 일괄 로드 및 추출 컴퓨팅에는 주문형 SKU 또는 예약(슬롯)을 사용하여 요금이 청구됩니다.
- Read API를 통해 Spark에서 읽을 때의 Storage Read API 가격 책정
- 스트리밍을 위한 Storage Write API 가격 책정
Iceberg 테이블 워크플로
다음 섹션에서는 관리형 테이블을 만들고, 로드하고, 관리하고, 쿼리하는 방법을 설명합니다.
시작하기 전에
Iceberg 테이블을 만들고 사용하기 전에 저장소 버킷에 클라우드 리소스 연결을 설정했는지 확인하세요. 연결에는 다음 필수 역할 섹션에 지정된 대로 저장소 버킷에 대한 쓰기 권한이 필요합니다.
필요한 역할
BigQuery에서 프로젝트의 테이블을 관리하도록 허용하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Iceberg 테이블 만들기:
-
프로젝트에 대한 BigQuery 데이터 소유자(
roles/bigquery.dataOwner
) -
프로젝트에 대한 BigQuery 연결 관리자(
roles/bigquery.connectionAdmin
)
-
프로젝트에 대한 BigQuery 데이터 소유자(
-
Iceberg 테이블을 쿼리하려면 다음 단계를 따르세요.
-
프로젝트에 대한 BigQuery 데이터 뷰어(
roles/bigquery.dataViewer
) -
프로젝트에 대한 BigQuery 사용자(
roles/bigquery.user
)
-
프로젝트에 대한 BigQuery 데이터 뷰어(
-
연결 서비스 계정에서 Cloud Storage의 데이터 읽고 쓰기:
-
버킷에 대한 스토리지 객체 관리자(
roles/storage.objectAdmin
) -
버킷에 대한 스토리지 기존 버킷 리더 (
roles/storage.legacyBucketReader
)
-
버킷에 대한 스토리지 객체 관리자(
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 BigQuery에서 프로젝트의 테이블을 관리하도록 허용하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
BigQuery에서 프로젝트의 테이블을 관리하도록 하려면 다음 권한이 필요합니다.
-
프로젝트에 대한
bigquery.connections.delegate
권한 -
프로젝트에 대한
bigquery.jobs.create
권한 -
프로젝트에 대한
bigquery.readsessions.create
권한 -
프로젝트에 대한
bigquery.tables.create
권한 -
프로젝트에 대한
bigquery.tables.get
권한 -
프로젝트에 대한
bigquery.tables.getData
권한 -
프로젝트에 대한
storage.buckets.get
권한 -
프로젝트에 대한
storage.objects.create
권한 -
프로젝트에 대한
storage.objects.delete
권한 -
프로젝트에 대한
storage.objects.get
권한 -
프로젝트에 대한
storage.objects.list
권한
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
Iceberg 테이블 만들기
Iceberg 테이블을 만들려면 다음 방법 중 하나를 선택합니다.
SQL
CREATE TABLE [PROJECT_NAME.]DATASET_NAME.TABLE_NAME ( COLUMN DATA_TYPE[, ...] ) CLUSTER BY CLUSTER_COLUMN_LIST WITH CONNECTION CONNECTION_NAME OPTIONS ( file_format = 'PARQUET', table_format = 'ICEBERG', storage_uri = 'STORAGE_URI');
다음을 바꿉니다.
- PROJECT_NAME: 데이터 세트가 포함된 프로젝트입니다. 정의되지 않으면 명령어는 기본 프로젝트를 가정합니다.
- DATASET_NAME: 기존 데이터 세트입니다.
- TABLE_NAME: 생성할 테이블의 이름입니다.
- DATA_TYPE: 열에 포함된 정보의 데이터 유형입니다.
- CLUSTER_COLUMN_LIST: 최대 4개의 열을 포함하는 쉼표로 구분된 목록입니다. 최상위 수준의 반복되지 않는 열이어야 합니다.
- CONNECTION_NAME: 연결의 이름입니다. 예를 들면
myproject.us.myconnection
입니다. - STORAGE_URI: 정규화된 Cloud Storage URI입니다.
예를 들면
gs://mybucket/table
입니다.
bq
bq --project_id=PROJECT_NAME mk \ --file_format=PARQUET \ --table_format=ICEBERG \ --connection_id=CONNECTION_NAME \ --storage_uri=STORAGE_URI \ --schema=COLUMN_NAME:DATA_TYPE[, ...] \ --clustering_fields=CLUSTER_COLUMN_LIST \ MANAGED_TABLE_NAME
다음을 바꿉니다.
- PROJECT_NAME: 데이터 세트가 포함된 프로젝트입니다. 정의되지 않으면 명령어는 기본 프로젝트를 가정합니다.
- CONNECTION_NAME: 연결의 이름입니다. 예를 들면
myproject.us.myconnection
입니다. - STORAGE_URI: 정규화된 Cloud Storage URI입니다.
예를 들면
gs://mybucket/table
입니다. - COLUMN_NAME: 열 이름입니다.
- DATA_TYPE: 열에 포함된 정보의 데이터 유형입니다.
- CLUSTER_COLUMN_LIST: 최대 4개의 열을 포함하는 쉼표로 구분된 목록입니다. 최상위 수준의 반복되지 않는 열이어야 합니다.
- MANAGED_TABLE_NAME: 생성할 테이블의 이름입니다.
API
다음과 같이 정의된 테이블 리소스를 사용하여 tables.insert
메서드를 호출합니다.
{ "tableReference": { "tableId": "TABLE_NAME" }, "biglakeConfiguration": { "connectionId": "CONNECTION_NAME", "fileFormat": "PARQUET", "tableFormat": "ICEBERG", "storageUri": "STORAGE_URI" }, "schema": { "fields": [ { "name": "COLUMN_NAME", "type": "DATA_TYPE" } [, ...] ] } }
다음을 바꿉니다.
- TABLE_NAME: 생성할 테이블의 이름입니다.
- CONNECTION_NAME: 연결의 이름입니다. 예를 들면
myproject.us.myconnection
입니다. - STORAGE_URI: 정규화된 Cloud Storage URI입니다.
와일드 카드도 지원됩니다. 예를 들면
gs://mybucket/table
입니다. - COLUMN_NAME: 열 이름입니다.
- DATA_TYPE: 열에 포함된 정보의 데이터 유형입니다.
Iceberg 테이블에 데이터 가져오기
다음 섹션에서는 다양한 테이블 형식에서 Iceberg 테이블로 데이터를 가져오는 방법을 설명합니다.
Parquet 파일에서 빠르게 로드
copy_files_only
옵션을 사용하면 콘텐츠를 읽고 새 파일로 다시 작성하는 대신 기존 Parquet 파일을 복사하여 데이터를 더 빠르게 로드할 수 있습니다. 빠른 로드는 일반 파일 로드에 비해 컴퓨팅 용량을 덜 사용합니다.
Parquet 파일은 Apache Iceberg 사양과 호환되어야 하며 완전한 열 통계를 보유해야 합니다. 빠른 로드는 파일이 읽혀 다시 처리되지 않으므로 파일에서 잘못된 값(예: 범위를 벗어난 타임스탬프)을 인식하지 못합니다. Parquet 파일 로드에 관한 자세한 내용은 새 테이블에 Parquet 데이터 로드를 참조하세요.
플랫 Parquet 파일을 기존 Iceberg 테이블에 빠르게 로드하려면 bq load
명령어를 사용합니다.
bq load \ --copy_files_only \ --source_format=PARQUET \ DATASET_NAME.TABLE_NAME \ PATH_TO_SOURCE
다음을 바꿉니다.
- DATASET_NAME: Iceberg 테이블이 포함된 데이터 세트입니다.
- TABLE_NAME: 데이터를 로드할 Iceberg 테이블의 이름입니다.
- PATH_TO_SOURCE: 정규화된 Cloud Storage URI 또는 쉼표로 구분된 URI 목록입니다.
와일드 카드도 지원됩니다. 예를 들면
gs://mybucket/mydata*.parquet
입니다.
플랫 파일에서 표준 데이터 로드
Iceberg 테이블은 BigQuery 로드 작업을 사용하여 외부 파일을 Iceberg 테이블에 로드합니다. 기존 Iceberg 테이블이 있는 경우 bq load
CLI 가이드 또는 LOAD
SQL 가이드에 따라 외부 데이터를 로드합니다. 데이터를 로드하면 새 Parquet 파일이 STORAGE_URI/data
폴더에 쓰여집니다.
기존 Iceberg 테이블 없이 이전 안내를 사용하면 대신 BigQuery 테이블이 생성됩니다.
관리형 테이블에 대한 일괄 로드의 도구별 예시는 다음을 참조하세요.
SQL
LOAD DATA INTO MANAGED_TABLE_NAME FROM FILES ( uris=['STORAGE_URI'], format='FILE_FORMAT');
다음을 바꿉니다.
- MANAGED_TABLE_NAME: 기존 Iceberg 테이블의 이름입니다.
- STORAGE_URI: 정규화된 Cloud Storage URI 또는 쉼표로 구분된 URI 목록입니다.
와일드 카드도 지원됩니다. 예를 들면
gs://mybucket/table
입니다. - FILE_FORMAT: 소스 테이블 형식입니다. 지원되는 형식은
load_option_list
의format
행을 참조하세요.
bq
bq load \ --source_format=FILE_FORMAT \ MANAGED_TABLE \ STORAGE_URI
다음을 바꿉니다.
- FILE_FORMAT: 소스 테이블 형식입니다. 지원되는 형식은
load_option_list
의format
행을 참조하세요. - MANAGED_TABLE_NAME: 기존 Iceberg 테이블의 이름입니다.
- STORAGE_URI: 정규화된 Cloud Storage URI 또는 쉼표로 구분된 URI 목록입니다.
와일드 카드도 지원됩니다. 예를 들면
gs://mybucket/table
입니다.
Hive 파티션을 나눈 파일에서 표준 로드
표준 BigQuery 로드 작업을 사용하여 Hive 파티션을 나눈 파일을 Iceberg 테이블에 로드할 수 있습니다. 자세한 내용은 외부에서 파티션을 나눈 데이터 로드를 참조하세요.
Pub/Sub에서 스트리밍 데이터 로드
Pub/Sub BigQuery 구독을 사용하여 스트리밍 데이터를 Iceberg 테이블에 로드할 수 있습니다.
Iceberg 테이블에서 데이터 내보내기
다음 섹션에서는 Iceberg 테이블에서 다양한 테이블 형식으로 데이터를 내보내는 방법을 설명합니다.
데이터를 플랫 형식으로 내보내기
Iceberg 테이블을 플랫 형식으로 내보내려면 EXPORT DATA
문을 사용하고 대상 형식을 선택합니다. 자세한 내용은 데이터 내보내기를 참조하세요.
Iceberg 메타데이터로 Iceberg 테이블 읽기
Iceberg 형식으로 Iceberg 테이블에서 데이터를 읽으려면 다음 단계를 따르세요.
EXPORT TABLE METADATA
SQL 문을 사용하여 메타데이터를 Iceberg 형식으로 내보냅니다.HadoopCatalog
를 사용하여 Apache Spark에서 테이블 데이터를 설정하고 읽습니다.다음 샘플은 Apache Iceberg에서 Spark SQL을 사용하도록 환경을 설정하고, 지정된 Iceberg 테이블에서 데이터를 가져오기 위한 쿼리를 실행합니다.
spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-ICEBERG_VERSION_NUMBER \ --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.CATALOG_NAME.type=hadoop \ --conf spark.sql.catalog.CATALOG_NAME.warehouse='BUCKET_PATH' \ # Queries the table spark-sql> SELECT * FROM CATALOG_NAME.FOLDER_NAME;
다음을 바꿉니다.
- ICEBERG_VERSION_NUMBER: Apache Spark Iceberg 런타임의 현재 버전입니다. Spark 출시 버전에서 최신 버전을 다운로드합니다.
- CATALOG_NAME: Iceberg 테이블을 참조할 카탈로그입니다.
- BUCKET_PATH: 테이블 파일이 포함된 버킷의 경로입니다. 예를 들면
gs://mybucket/
입니다. - FOLDER_NAME: 테이블 파일이 포함된 폴더입니다.
예를 들면
myfolder
입니다.
Iceberg 테이블 수정
Iceberg 테이블을 수정하려면 테이블 스키마 수정에 표시된 단계를 따르세요.
가격 책정
Iceberg 테이블 가격은 다음 세 가지 구성요소로 구성됩니다.
스토리지
Iceberg 테이블은 모든 데이터를 Cloud Storage에 저장합니다. 이전 테이블 데이터를 비롯하여 저장된 모든 데이터에 대해 요금이 청구됩니다. 해당하는 경우 Cloud Storage 데이터 처리 및 전송 요금도 적용될 수 있습니다. BigQuery 전용 스토리지 요금은 없습니다. 자세한 내용은 Cloud Storage 가격 책정을 참조하세요.
스토리지 최적화
Iceberg 테이블에는 파일 병합 및 재클러스터링과 같은 스토리지 최적화 작업이 필요합니다.
이러한 최적화 작업은 Enterprise 버전 사용한 만큼만 지불 슬롯을 사용하며 기존 BACKGROUND
예약은 사용하지 않습니다.
BigQuery Storage Write API를 통해 스트리밍하는 동안 실행되는 데이터 내보내기 작업은 Storage Write API 가격 책정에 포함되며 백그라운드 유지보수로 청구되지 않습니다. 자세한 내용은 데이터 수집 가격 책정을 참조하세요.
쿼리 및 작업
BigQuery 테이블과 마찬가지로 BigQuery 주문형 가격 책정을 사용하는 경우 쿼리 및 읽은 바이트 수(TiB당)에 따라 비용이 청구되며, BigQuery 용량 컴퓨팅 가격 책정을 사용하는 경우에는 슬롯 소비(슬롯 시간당)에 따라 비용이 청구됩니다.
BigQuery 가격 책정은 BigQuery Storage Read API 및 BigQuery Storage Write API에도 적용됩니다.
로드 및 내보내기 작업 (예: EXPORT METADATA
)은 Enterprise 버전 사용한 만큼만 지불 슬롯을 사용합니다.
이는 이러한 작업에 비용이 청구되지 않는 BigQuery 테이블과 다릅니다. Enterprise 또는 Enterprise Plus 슬롯이 있는 PIPELINE
예약을 사용할 수 있는 경우 로드 및 내보내기 작업은 이러한 예약 슬롯을 우선적으로 사용합니다.
제한사항
Iceberg 테이블에는 다음과 같은 제한사항이 있습니다.
- Iceberg 테이블은 이름 변경 작업 또는
ALTER TABLE RENAME TO
문을 지원하지 않습니다. - Iceberg 테이블은 테이블 사본 또는
CREATE TABLE COPY
문을 지원하지 않습니다. - Iceberg 테이블은 테이블 클론 또는
CREATE TABLE CLONE
문을 지원하지 않습니다. - Iceberg 테이블은 테이블 스냅샷 또는
CREATE SNAPSHOT TABLE
문을 지원하지 않습니다. - Iceberg 테이블은 다음 테이블 스키마를 지원하지 않습니다.
EXPORT METADATA
는 정밀도가 38자리보다 큰BIGNUMERIC
또는NUMERIC
데이터 유형이 포함된 테이블을 지원하지 않습니다.- Iceberg 테이블은 다음과 같은 스키마 개선 사례를 지원하지 않습니다.
NUMERIC
에서FLOAT
로 유형 강제 변환INT
에서FLOAT
로 유형 강제 변환- SQL DDL 문을 사용하여 기존
RECORD
열에 새 중첩 필드 추가
- Iceberg 테이블은 콘솔이나 API에서 쿼리할 때 0바이트 스토리지 크기를 표시합니다.
- Iceberg 테이블은 구체화된 뷰를 지원하지 않습니다.
- Iceberg 테이블은 멀티 문 트랜잭션을 지원하지 않습니다.
- Iceberg 테이블은 변경 데이터 캡처(CDC) 업데이트를 지원하지 않습니다.
- BigQuery Storage Write API를 사용하여 Iceberg 테이블로 데이터를 스트리밍할 때는 먼저 쿼리 캐시를 사용 중지해야 합니다.
- Iceberg 테이블은 관리형 재해 복구를 지원하지 않습니다.
- Iceberg 테이블은 파티셔닝을 지원하지 않습니다. 대안으로 클러스터링을 고려하세요.
- Iceberg 테이블은 행 수준 보안을 지원하지 않습니다.
- Iceberg 테이블은 시간 이동을 지원하지 않습니다.
- Iceberg 테이블은 장애 안전 기간을 지원하지 않습니다.
- Iceberg 테이블은 추출 작업을 지원하지 않습니다.
INFORMATION_SCHEMA.TABLE_STORAGE
뷰에는 Iceberg 테이블이 포함되지 않습니다.- Iceberg 테이블은 쿼리 결과 대상으로 지원되지 않습니다.
CREATE OR REPLACE
는 표준 테이블을 Iceberg 테이블로 또는 Iceberg 테이블을 표준 테이블로 대체하는 것을 지원하지 않습니다.- 일괄 로드 및
LOAD DATA
문은 기존 Iceberg 테이블에 데이터를 추가하는 작업만 지원합니다. - 일괄 로드 및
LOAD DATA
문은 스키마 업데이트를 지원하지 않습니다. TRUNCATE TABLE
은 Iceberg 테이블을 지원하지 않습니다. 다음과 같은 두 가지 대안이 있습니다.CREATE OR REPLACE TABLE
: 동일한 테이블 생성 옵션을 사용합니다.DELETE FROM
테이블WHERE
true
APPENDS
테이블 값 함수(TVF)는 Iceberg 테이블을 지원하지 않습니다.- Apache Spark의 Iceberg 내보내기에는 쓰기 최적화 스토리지에 최근에 스트리밍된 데이터가 포함되지 않습니다.
- 빠른 로드는 유연한 열 이름이 있는 파일을 지원하지 않습니다.