크로스 클라우드 레이크하우스 사용

Apache Iceberg용 레이크하우스는 교차 클라우드 레이크하우스 구성을 통해 원격 데이터 쿼리를 지원합니다. 구성되면 시스템은 BigQuery의 표준 SQL 또는 Managed Service for Apache Spark의 Apache Spark를 사용하여 데이터 액세스를 지원합니다.

이 페이지에서는 교차 클라우드 레이크하우스를 설정한 후 원격 데이터를 쿼리하는 방법을 보여줍니다.

시작하기 전에

데이터를 쿼리하려면 다음을 완료해야 합니다.

  1. AWS Glue 또는 Databricks Unity Catalog에 교차 클라우드 레이크하우스를 설정합니다.
  2. 원격 카탈로그에 데이터가 있는지 확인합니다.

필요한 역할

연합 데이터를 쿼리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

데이터 쿼리

연합을 설정한 후 BigQuery의 표준 SQL 또는 Managed Service for Apache Spark의 Apache Spark를 사용하여 원격 데이터를 쿼리할 수 있습니다.

Lakehouse는 메타데이터 변환 및 보안 데이터 액세스를 처리하므로 원격 Apache Iceberg 테이블을 환경의 로컬 테이블처럼 취급할 수 있습니다. Google Cloud

BigQuery에서 쿼리

연합된 Apache Iceberg 테이블을 쿼리하려면 표준 BigQuery SQL을 사용합니다. 테이블 경로는 4부분 구조(project.federated_catalog.namespace.table)를 따릅니다. 캐싱, 사용자 인증 정보 제공, CCI 전송 라우팅은 자동으로 처리됩니다.

SELECT
  user_id,
  action,
  COUNT(*) as total_actions
FROM `PROJECT_ID.FEDERATED_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME`
WHERE event_date >= '2026-04-01'
GROUP BY 1, 2;

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다. Google Cloud
  • FEDERATED_CATALOG_NAME: 연합된 카탈로그의 이름입니다.
  • NAMESPACE_NAME: 카탈로그 내의 네임스페이스입니다.
  • TABLE_NAME: 테이블의 이름입니다.
  • REGION: Google Cloud 리전입니다. 예를 들면 us-east4입니다.

bq 명령줄 도구를 사용하여 쿼리를 실행할 수도 있습니다.

bq --location="REGION" --project_id="PROJECT_ID" query --use_legacy_sql=false \
  "SELECT * FROM \`PROJECT_ID.FEDERATED_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME\` LIMIT 10"

Managed Service for Apache Spark에서 쿼리

별도의 AWS 사용자 인증 정보 또는 S3 커넥터를 관리하지 않고도 Managed Service for Apache Spark 클러스터에서 교차 클라우드 레이크하우스 데이터를 직접 읽을 수 있습니다. Spark는 BigQuery Storage Read API를 사용하는 대신 표준 Apache Iceberg REST 카탈로그 인터페이스를 사용하여 레이크하우스에 직접 연결합니다.

레이크하우스 REST 엔드포인트로 Managed Service for Apache Spark 작업을 구성하면 레이크하우스는 X-Iceberg-Access-Delegation=vended-credentials를 통해 Spark에 임시 범위 지정 S3 사용자 인증 정보를 자동으로 제공합니다. 이렇게 하면 Spark가 카탈로그의 구성을 준수하면서 기본 데이터를 안전하게 읽을 수 있습니다.

레이크하우스 REST 엔드포인트로 Managed Service for Apache Spark 작업을 구성하려면 다음 단계를 따르세요.

  1. Spark 작업을 구성합니다.

    이 명령어에서 Spark 작업을 제출할 때 Apache Iceberg REST 카탈로그 속성을 전달합니다. 이렇게 하면 연합된 레이크하우스 카탈로그가 로컬 Spark 카탈로그 이름 (예: my_catalog)에 매핑됩니다.

    gcloud dataproc jobs submit pyspark PYSPARK_SCRIPT_PATH \
      --cluster="CLUSTER_NAME" \
      --region="REGION" \
      --properties="spark.sql.catalog.SPARK_CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,\
    spark.sql.catalog.SPARK_CATALOG_NAME.type=rest,\
    spark.sql.catalog.SPARK_CATALOG_NAME.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\
    spark.sql.catalog.SPARK_CATALOG_NAME.warehouse=bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME,\
    spark.sql.catalog.SPARK_CATALOG_NAME.io-impl=org.apache.iceberg.aws.s3.S3FileIO,\
    spark.sql.catalog.SPARK_CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials,\
    spark.sql.catalog.SPARK_CATALOG_NAME.rest-metrics-reporting-enabled=false,\
    spark.sql.catalog.SPARK_CATALOG_NAME.header.x-goog-user-project=PROJECT_ID"
  2. PySpark에서 데이터를 쿼리합니다.

    이 명령어는 Spark를 사용하여 레이크하우스 카탈로그에서 직접 읽은 다음 표준 변환을 실행합니다.

    df = spark.table("SPARK_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME")
    df.filter(df.action == "purchase").show()

    다음을 바꿉니다.

    • PYSPARK_SCRIPT_PATH: PySpark 작업의 경로입니다.
    • CLUSTER_NAME: Managed Service for Apache Spark 클러스터의 이름입니다.
    • REGION: Google Cloud 리전입니다. 예를 들면 us-east4입니다.
    • PROJECT_ID: 프로젝트 ID입니다. Google Cloud
    • SPARK_CATALOG_NAME: Spark 카탈로그에 사용할 이름입니다.
    • FEDERATED_CATALOG_NAME: 연합된 카탈로그의 이름입니다.
    • NAMESPACE_NAME: 카탈로그 내의 네임스페이스입니다.
    • TABLE_NAME: 테이블의 이름입니다.

다음 단계