Menggunakan Lakehouse tanpa batas

Lakehouse untuk Apache Iceberg mendukung kueri data jarak jauh melalui konfigurasi Lakehouse tanpa batas. Setelah dikonfigurasi, sistem akan mendukung akses data menggunakan SQL standar di BigQuery, versi open source Apache Spark, atau Managed Service untuk Apache Spark. Selain kueri analisis, Anda dapat menggunakan data gabungan untuk insight dan tata kelola berbasis AI:

  • Analisis Percakapan: Buat agen khusus yang didasarkan pada sumber data Anda yang sebenarnya, termasuk tabel lintas cloud, untuk menganalisis data di seluruh cloud dari satu percakapan.
  • Katalog Dataplex: Gunakan fitur Knowledge Catalog untuk pembuatan profil dan insight data dengan sumber data gabungan.

Untuk mendapatkan insight yang lebih mendalam, Anda dapat membuat agen khusus yang didasarkan pada sumber data Anda, mulai dari project, set data, dan tabel hingga tampilan, grafik, dan fungsi yang ditentukan pengguna. Karena data Anda jarang berada di satu tempat, analisis percakapan menjangkau tabel BigQuery Standar hingga tabel Apache Iceberg yang dikelola Lakehouse dan sumber Lakehouse tanpa batas seperti Databricks Unity, AWS Glue, SAP, dan Salesforce. Hal ini memungkinkan Anda mengurai silo data dan menganalisis data di seluruh cloud dari satu percakapan.

Halaman ini menunjukkan cara membuat kueri data jarak jauh setelah Anda menyiapkan Lakehouse tanpa batas.

Sebelum memulai

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

  1. Siapkan Lakehouse tanpa batas untuk AWS Glue, Databricks Unity Catalog, atau Snowflake.
  2. Pastikan 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, pemberian 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: project ID 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

Kirim workload batch PySpark ke Managed Service untuk Apache Spark dengan pemberian kredensial diaktifkan menggunakan X-Iceberg-Access-Delegation=vended-credentials. Spark akan menggunakan kredensial yang diberikan dengan cakupan jangka pendek untuk terhubung ke S3 dengan aman, tanpa perlu mengelola kredensial AWS atau konektor S3 terpisah.

  1. Aktifkan konektivitas keluar untuk Managed Service untuk Apache Spark.

    Managed Service untuk Apache Spark tidak dapat terhubung ke AWS S3 dengan konfigurasi jaringan default-nya . Anda harus menyediakan Cloud Router dan Cloud NAT.

    gcloud compute routers create lakehouse-router \
      --network=NETWORK_NAME \
      --region=REGION
    
    gcloud compute routers nats create lakehouse-nat \
      --router=lakehouse-router \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges \
      --region=REGION

    Ganti kode berikut:

    • NETWORK_NAME: jaringan untuk workload batch Managed Service untuk Apache Spark (misalnya, default).
    • REGION: region untuk workload batch Managed Service untuk Apache Spark.
  2. Buat file aplikasi PySpark dan jalankan tugas PySpark.

    from pyspark.sql import SparkSession
    spark = SparkSession.builder.appName("CATALOG_NAME").getOrCreate()
    
    df = spark.table("CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME")
    df.show(10, truncate=False)

    Upload file ini ke Cloud Storage di PYSPARK_FILE.

    gcloud dataproc batches submit pyspark PYSPARK_FILE \
        --project=PROJECT_ID \
        --region=REGION \
        --version=RUNTIME_VERSION \
        --properties="\
        spark.sql.defaultCatalog=CATALOG_NAME,\
        spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,\
        spark.sql.catalog.CATALOG_NAME.type=rest,\
        spark.sql.catalog.CATALOG_NAME.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\
        spark.sql.catalog.CATALOG_NAME.warehouse=bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME,\
        spark.sql.catalog.CATALOG_NAME.header.x-goog-user-project=PROJECT_ID,\
        spark.sql.catalog.CATALOG_NAME.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager,\
        spark.sql.catalog.CATALOG_NAME.io-impl=IO_IMPL,\
        spark.sql.catalog.CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials,\
        spark.sql.catalog.CATALOG_NAME.rest-metrics-reporting-enabled=false,\
        spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"

    Ganti kode berikut:

    • NAMESPACE_NAME: namespace dalam katalog gabungan.
    • TABLE_NAME: nama tabel dalam katalog gabungan.
    • CATALOG_NAME: nama untuk katalog Spark lokal (misalnya, my_catalog).
    • PYSPARK_FILE: jalur Cloud Storage gs:// ke file aplikasi PySpark Anda.
    • REGION: region untuk workload batch Managed Service untuk Apache Spark.
    • RUNTIME_VERSION: versi runtime Managed Service untuk Apache Spark, misalnya 2.3.
    • PROJECT_ID: project yang ditagih untuk menggunakan endpoint katalog REST Apache Iceberg.
    • FEDERATED_CATALOG_NAME: nama katalog gabungan.
    • IO_IMPL: implementasi FileIO yang cocok dengan penyimpanan yang mendasarinya.

    Parameter Konfigurasi Spark

    Tabel berikut mencantumkan parameter umum yang diperlukan untuk semua koneksi:

    Parameter Deskripsi
    spark.sql.defaultCatalog Nama katalog default (misalnya, CATALOG_NAME).
    spark.sql.catalog.CATALOG_NAME Class implementasi katalog. Tetapkan ke org.apache.iceberg.spark.SparkCatalog.
    spark.sql.catalog.CATALOG_NAME.type Jenis backend katalog. Tetapkan ke rest untuk katalog REST Iceberg.
    spark.sql.catalog.CATALOG_NAME.uri URI endpoint katalog REST. Tetapkan ke https://biglake.googleapis.com/iceberg/v1/restcatalog.
    spark.sql.catalog.CATALOG_NAME.warehouse Jalur lokasi gudang untuk katalog gabungan. Tetapkan ke bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME.
    spark.sql.catalog.CATALOG_NAME.header.x-goog-user-project Project ID Google Cloud yang digunakan untuk atribusi kuota dan penagihan. Tetapkan ke PROJECT_ID.
    spark.sql.extensions Ekstensi sesi Spark untuk sintaksis dan fitur SQL Iceberg. Tetapkan ke org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions.

    Tabel berikut mencantumkan parameter autentikasi:

    Parameter Deskripsi
    spark.sql.catalog.CATALOG_NAME.rest.auth.type Class pengelola autentikasi kustom. Tetapkan ke org.apache.iceberg.gcp.auth.GoogleAuthManager untuk autentikasi alur OAuth.
    spark.sql.catalog.CATALOG_NAME.oauth2-server-uri URI endpoint server token OAuth2. Tetapkan ke https://oauth2.googleapis.com/token untuk autentikasi Personal Access Token (PAT).
    spark.sql.catalog.CATALOG_NAME.token Token Bearer atau Personal Access Token (PAT). Biasanya ditetapkan ke $(gcloud auth application-default print-access-token) untuk autentikasi PAT.

    Tabel berikut mencantumkan parameter unik berdasarkan penyedia penyimpanan (IO_IMPL):

    Penyimpanan spark.sql.catalog.CATALOG_NAME.io-impl Catatan
    Amazon S3 org.apache.iceberg.aws.s3.S3FileIO Memerlukan pemberian kredensial (X-Iceberg-Access-Delegation=vended-credentials) jika diaktifkan.
    Parameter tambahan: spark.sql.catalog.CATALOG_NAME.s3.region (untuk mengetahui daftar region, lihat Endpoint dan kuota Amazon S3).
    Google Cloud Storage org.apache.iceberg.gcp.gcs.GCSFileIO Parameter tambahan: spark.sql.catalog.CATALOG_NAME.gcs.oauth2.refresh-credentials-endpoint=https://oauth2.googleapis.com/token.
    Azure Blob Storage org.apache.iceberg.azure.adlsv2.ADLSFileIO Tidak diperlukan parameter penyimpanan tambahan.

    Untuk Snowflake, Anda mungkin mengalami masalah saat membuat kueri kolom STRING karena kolom tersebut otomatis dioptimalkan penyimpanannya. Anda dapat mengatasi masalah ini dengan salah satu dari dua cara berikut:

    • Opsi 1: Nonaktifkan vektorisasi di Spark: Tambahkan properti konfigurasi Spark berikut ke flag --properties:
    • spark.sql.iceberg.vectorization.enabled=false
    • spark.sql.catalog.CATALOG_NAME.table-override.read.parquet.vectorization.enabled=false

    • Opsi 2: Ubah kebijakan serialisasi di Snowflake: Ubah kebijakan serialisasi penyimpanan menjadi COMPATIBLE untuk tabel di Snowflake.

Langkah berikutnya