Membuat set data gabungan AWS Glue

Dokumen ini menjelaskan cara membuat set data gabungan di BigQuery yang ditautkan ke database yang ada di AWS Glue.

Set data gabungan adalah koneksi antara BigQuery dan sumber data eksternal di tingkat set data. Tabel dalam set data gabungan secara otomatis diisi dari tabel di sumber data eksternal yang sesuai. Anda dapat membuat kueri tabel ini secara langsung di BigQuery, tetapi Anda tidak dapat membuat modifikasi, penambahan, atau penghapusan. Namun, setiap update yang Anda lakukan di sumber data eksternal akan otomatis diterapkan di BigQuery.

Sebelum memulai

Pastikan Anda memiliki koneksi untuk mengakses data AWS Glue.

  • Untuk membuat atau mengubah koneksi, ikuti petunjuk di Menghubungkan ke Amazon S3. Saat Anda membuat koneksi tersebut, sertakan pernyataan kebijakan berikut untuk AWS Glue dalam kebijakan Identity and Access Management AWS untuk BigQuery. Sertakan pernyataan ini selain izin lainnya di bucket Amazon S3 tempat data dalam tabel AWS Glue Anda disimpan.

    {
     "Effect": "Allow",
     "Action": [
       "glue:GetDatabase",
       "glue:GetTable",
       "glue:GetTables",
       "glue:GetPartitions"
     ],
     "Resource": [
       "arn:aws:glue:REGION:ACCOUNT_ID:catalog",
       "arn:aws:glue:REGION:ACCOUNT_ID:database/DATABASE_NAME",
       "arn:aws:glue:REGION:ACCOUNT_ID:table/DATABASE_NAME/*"
     ]
    }

    Ganti kode berikut:

    • REGION: region AWS—misalnya us-east-1
    • ACCOUNT_ID:: ID Akun AWS 12 digit
    • DATABASE_NAME: nama database AWS Glue

Izin yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk membuat set data gabungan, minta administrator untuk memberi Anda peran IAM BigQuery Admin (roles/bigquery.admin). Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk membuat set data gabungan. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat set data gabungan:

  • bigquery.datasets.create
  • bigquery.connections.use
  • bigquery.connections.delegate

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, baca Pengantar IAM.

Membuat set data gabungan

Untuk membuat set data gabungan, lakukan langkah berikut:

Konsol

  1. Buka halaman BigQuery di konsol Google Cloud.

    Buka halaman BigQuery

  2. Di panel Explorer, pilih project tempat Anda ingin membuat set data.

  3. Luaskan opsi Actions, lalu klik Create dataset.

  4. Di halaman Create dataset, lakukan hal berikut:

    • Untuk Dataset ID, masukkan nama set data yang unik.
    • Untuk Location type, pilih lokasi AWS untuk set data, seperti aws-us-east-1. Setelah Anda membuat set data, lokasi tidak dapat diubah.
    • Untuk Set Data Eksternal, lakukan hal berikut:

      • Centang kotak di samping Tautkan ke set data eksternal.
      • Untuk Jenis set data eksternal, pilih AWS Glue.
      • Untuk Sumber eksternal, masukkan aws-glue://, diikuti dengan Amazon Resource Name (ARN) database AWS Glue—misalnya, aws-glue://arn:aws:glue:us-east-1:123456789:database/test_database.
      • Untuk Connection ID, pilih koneksi AWS Anda.
    • Biarkan setelan default lainnya sebagaimana adanya.

  5. Klik Create dataset.

SQL

Gunakan pernyataan bahasa definisi data (DDL) CREATE EXTERNAL SCHEMA.

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE EXTERNAL SCHEMA DATASET_NAME
    WITH CONNECTION PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME
      OPTIONS (
        external_source = 'AWS_GLUE_SOURCE',
        location = 'LOCATION');

    Ganti kode berikut:

    • DATASET_NAME: nama set data baru Anda di BigQuery.
    • PROJECT_ID: project ID Anda.
    • CONNECTION_LOCATION: lokasi koneksi AWS Anda—misalnya, aws-us-east-1.
    • CONNECTION_NAME: nama koneksi AWS Anda.
    • AWS_GLUE_SOURCE: Amazon Resource Name (ARN) database AWS Glue dengan awalan yang mengidentifikasi sumber—misalnya, aws-glue://arn:aws:glue:us-east-1:123456789:database/test_database.
    • LOCATION: lokasi set data baru Anda di BigQuery—misalnya, aws-us-east-1. Setelah membuat set data, Anda tidak dapat mengubah lokasinya.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Di lingkungan command line, buat set data menggunakan perintah bq mk:

bq --location=LOCATION mk --dataset \
    --external_source aws-glue://AWS_GLUE_SOURCE \
    --connection_id PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME \
    DATASET_NAME

Ganti kode berikut:

  • LOCATION: lokasi set data baru Anda di BigQuery—misalnya, aws-us-east-1. Setelah membuat set data, Anda tidak dapat mengubah lokasinya. Anda dapat menetapkan nilai lokasi default menggunakan file .bigqueryrc.
  • AWS_GLUE_SOURCE: Amazon Resource Name (ARN) dari database AWS Glue—misalnya, arn:aws:glue:us-east-1:123456789:database/test_database.
  • PROJECT_ID: Project ID BigQuery Anda.
  • CONNECTION_LOCATION: lokasi koneksi AWS Anda—misalnya, aws-us-east-1.
  • CONNECTION_NAME: nama koneksi AWS Anda.
  • DATASET_NAME: nama set data baru Anda di BigQuery. Untuk membuat set data dalam project selain project default Anda, tambahkan project ID ke nama set data dalam format berikut: PROJECT_ID:DATASET_NAME.

Terraform

Gunakan resource google_bigquery_dataset.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Contoh berikut membuat set data gabungan AWS Glue:

resource "google_bigquery_dataset" "dataset" {
  provider                    = google-beta
  dataset_id                  = "example_dataset"
  friendly_name               = "test"
  description                 = "This is a test description."
  location                    = "aws-us-east-1"

external_dataset_reference {
  external_source = "aws-glue://arn:aws:glue:us-east-1:999999999999:database/database"
  connection      = "projects/project/locations/aws-us-east-1/connections/connection"
  }
}

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

API

Panggil metode datasets.insert dengan resource set data dan kolom externalDatasetReference yang ditentukan untuk database AWS Glue Anda.

Mencantumkan tabel dalam set data gabungan

Untuk mencantumkan tabel yang tersedia untuk kueri dalam set data gabungan Anda, baca Mencantumkan set data.

Mendapatkan informasi tabel

Untuk mendapatkan informasi tentang tabel dalam set data gabungan, seperti detail skema, lihat Mendapatkan informasi tabel.

Mengontrol akses ke tabel

Untuk mengelola akses ke tabel dalam set data gabungan, lihat Mengontrol akses ke resource dengan IAM.

Keamanan tingkat baris, keamanan tingkat kolom, dan penyamaran data juga didukung untuk tabel dalam set data gabungan.

Operasi skema yang mungkin membatalkan kebijakan keamanan, seperti menghapus kolom di AWS Glue, dapat menyebabkan tugas gagal hingga kebijakan diperbarui. Selain itu, jika Anda menghapus tabel di AWS Glue dan membuatnya ulang, kebijakan keamanan Anda tidak lagi berlaku untuk tabel yang dibuat ulang.

Membuat kueri data AWS Glue

Membuat kueri tabel dalam set data gabungan sama dengan membuat kueri tabel di set data BigQuery lainnya.

Anda dapat membuat kueri tabel AWS Glue dalam format berikut:

  • CSV (terkompresi dan tidak terkompresi)
  • JSON (terkompresi dan tidak dikompresi)
  • Parquet
  • ORC
  • Avro
  • Iceberg

Detail pemetaan tabel

Setiap tabel yang aksesnya Anda berikan di database AWS Glue akan muncul sebagai tabel yang setara di set data BigQuery Anda.

Format

Format setiap tabel BigQuery ditentukan oleh kolom berikut di tabel AWS Glue masing-masing:

  • InputFormat (Table.StorageDescriptor.InputFormat)
  • OutputFormat (Table.StorageDescriptor.OutputFormat)
  • SerializationLib (Table.StorageDescriptor.SerdeInfo.SerializationLibrary)

Satu-satunya pengecualian adalah tabel Iceberg, yang menggunakan kolom TableType (Table.Parameters["table_type"]).

Misalnya, tabel AWS Glue dengan kolom berikut dipetakan ke tabel ORC di BigQuery:

  • InputFormat = "org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"
  • OutputFormat = "org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"
  • SerializationLib = "org.apache.hadoop.hive.ql.io.orc.OrcSerde"

Lokasi

Lokasi setiap tabel BigQuery ditentukan oleh hal berikut:

  • Tabel Iceberg: kolom Table.Parameters["metadata_location"] dalam tabel AWS Glue
  • Tabel non-Iceberg yang tidak dipartisi: kolom Table.StorageDescriptor.Location dalam tabel AWS Glue
  • Tabel non-Iceberg berpartisi: AWS Glue GetPartitions API

Properti lainnya

Selain itu, beberapa properti tabel AWS Glue otomatis dipetakan ke opsi khusus format di BigQuery:

Format SerializationLib Nilai tabel AWS Glue Opsi BigQuery
CSV LazySimpleSerDe Table.StorageDescriptor.SerdeInfo.Parameters["field.delim"] CsvOptions.fieldDelimiter
CSV LazySimpleSerDe Table.StorageDescriptor.Parameters["serialization.encoding"] CsvOptions.encoding
CSV LazySimpleSerDe Table.StorageDescriptor.Parameters["skip.header.line.count"] CsvOptions.skipLeadingRows
CSV OpenCsvSerDe Table.StorageDescriptor.SerdeInfo.Parameters["separatorChar"] CsvOptions.fieldDelimiter
CSV OpenCsvSerDe Table.StorageDescriptor.SerdeInfo.Parameters["quoteChar"] CsvOptions.quote
CSV OpenCsvSerDe Table.StorageDescriptor.Parameters["serialization.encoding"] CsvOptions.encoding
CSV OpenCsvSerDe Table.StorageDescriptor.Parameters["skip.header.line.count"] CsvOptions.skipLeadingRows
JSON Hive JsonSerDe Table.StorageDescriptor.Parameters["serialization.encoding"] JsonOptions.encoding

Membuat tampilan dalam set data gabungan

Anda tidak dapat membuat tampilan di set data gabungan. Namun, Anda dapat membuat tampilan dalam set data standar yang didasarkan pada tabel dalam set data gabungan. Untuk mengetahui informasi selengkapnya, lihat Membuat tampilan.

Menghapus set data gabungan

Menghapus set data gabungan sama dengan menghapus set data BigQuery lainnya. Untuk mengetahui informasi selengkapnya, lihat Menghapus set data.

Harga

Untuk mengetahui informasi tentang harga, lihat harga BigQuery Omni.

Batasan

  • Semua batasan BigQuery Omni berlaku.
  • Anda tidak dapat menambahkan, menghapus, atau memperbarui data atau metadata dalam tabel di set data gabungan AWS Glue.
  • Anda tidak dapat membuat tabel, tampilan, atau tampilan terwujud baru dalam set data gabungan AWS Glue.
  • Tampilan INFORMATION_SCHEMA tidak didukung.
  • Pemcachean metadata tidak didukung.
  • Setelan tingkat set data yang terkait dengan setelan default pembuatan tabel tidak akan memengaruhi set data gabungan karena Anda tidak dapat membuat tabel secara manual.
  • Jenis data Apache Hive UNION tidak didukung untuk tabel Avro.

Langkah berikutnya