Menggunakan Lakehouse lintas cloud

Lakehouse for Apache Iceberg mendukung kueri data jarak jauh melalui konfigurasi Lakehouse lintas cloud. Setelah dikonfigurasi, sistem akan mendukung akses data menggunakan SQL standar di BigQuery atau Apache Spark di Managed Service untuk Apache Spark.

Halaman ini menunjukkan cara membuat kueri data jarak jauh setelah Anda menyiapkan Lakehouse lintas cloud.

Sebelum memulai

Sebelum dapat membuat kueri data, Anda harus menyelesaikan langkah-langkah berikut:

  1. Menyiapkan Lakehouse lintas cloud untuk AWS Glue atau Databricks Unity Catalog.
  2. Memastikan Anda memiliki data dalam katalog jarak jauh.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk membuat kueri data gabungan, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Data kueri

Setelah menyiapkan gabungan, Anda dapat membuat kueri data jarak jauh menggunakan SQL standar di BigQuery atau Apache Spark di Managed Service untuk Apache Spark.

Lakehouse menangani terjemahan metadata dan akses data yang aman, yang memungkinkan Anda memperlakukan tabel Apache Iceberg jarak jauh seolah-olah berada di lingkungan Anda Google Cloud .

Kueri dari BigQuery

Untuk membuat kueri tabel Apache Iceberg gabungan, gunakan SQL BigQuery standar. Jalur tabel mengikuti struktur 4 bagian: project.federated_catalog.namespace.table. Perutean transit CCI, vending kredensial, dan caching ditangani secara otomatis.

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;

Ganti kode berikut:

  • PROJECT_ID: ID project Anda Google Cloud .
  • FEDERATED_CATALOG_NAME: nama katalog gabungan.
  • NAMESPACE_NAME: namespace dalam katalog.
  • TABLE_NAME: nama tabel.
  • REGION: Google Cloud region. Misalnya, us-east4.

Anda juga dapat menjalankan kueri menggunakan alat command line 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"

Kueri dari Managed Service untuk Apache Spark

Anda dapat membaca data Lakehouse lintas cloud langsung dari cluster Managed Service untuk Apache Spark tanpa mengelola kredensial AWS atau konektor S3 terpisah. Spark terhubung langsung ke Lakehouse menggunakan antarmuka katalog REST Apache Iceberg standar, bukan menggunakan BigQuery Storage Read API.

Dengan mengonfigurasi tugas Managed Service untuk Apache Spark dengan endpoint REST Lakehouse, Lakehouse akan otomatis menyediakan kredensial S3 sementara dan tercakup ke Spark melalui X-Iceberg-Access-Delegation=vended-credentials. Hal ini memungkinkan Spark membaca data yang mendasarinya dengan aman sambil mematuhi konfigurasi katalog Anda.

Untuk mengonfigurasi tugas Managed Service untuk Apache Spark dengan endpoint REST Lakehouse:

  1. Konfigurasikan tugas Spark.

    Dalam perintah ini, teruskan properti katalog REST Apache Iceberg saat mengirimkan tugas Spark. Tindakan ini memetakan katalog Lakehouse gabungan Anda ke nama katalog Spark lokal (misalnya, 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. Buat kueri data di PySpark.

    Perintah ini menggunakan Spark untuk membaca langsung dari katalog Lakehouse, lalu menjalankan transformasi standar.

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

    Ganti kode berikut:

    • PYSPARK_SCRIPT_PATH: jalur ke tugas PySpark Anda.
    • CLUSTER_NAME: nama cluster Managed Service untuk Apache Spark Anda.
    • REGION: Google Cloud region. Misalnya, us-east4.
    • PROJECT_ID: ID project Anda Google Cloud .
    • SPARK_CATALOG_NAME: nama yang ingin Anda gunakan untuk katalog Spark.
    • FEDERATED_CATALOG_NAME: nama katalog gabungan.
    • NAMESPACE_NAME: namespace dalam katalog.
    • TABLE_NAME: nama tabel.

Langkah berikutnya