

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# BigQuery koneksi
<a name="aws-glue-programming-etl-connect-bigquery-home"></a>

Anda dapat menggunakan AWS Glue for Spark untuk membaca dan menulis ke tabel di Google BigQuery di AWS Glue 4.0 dan versi yang lebih baru. Anda dapat membaca dari BigQuery dengan kueri Google SQL. Anda terhubung dengan BigQuery menggunakan kredenSIAL yang disimpan AWS Secrets Manager melalui koneksi AWS Glue.

Untuk informasi selengkapnya tentang Google BigQuery, lihat BigQuery situs web [ Google Cloud](https://cloud.google.com/bigquery).

## Mengkonfigurasi BigQuery koneksi
<a name="aws-glue-programming-etl-connect-bigquery-configure"></a>

Untuk terhubung ke Google BigQuery dari AWS Glue, Anda harus membuat dan menyimpan kredenSIAL Google Cloud Platform Anda secara AWS Secrets Manager rahasia, lalu mengaitkan rahasia itu dengan koneksi Google BigQuery AWS Glue.

**Untuk mengkonfigurasi koneksi ke BigQuery:**

1. Di Google Cloud Platform, buat dan identifikasi sumber daya yang relevan:
   + Buat atau identifikasi proyek GCP yang berisi BigQuery tabel yang ingin Anda sambungkan.
   + Aktifkan BigQuery API. Untuk informasi selengkapnya, lihat [ Menggunakan BigQuery API Baca Penyimpanan untuk membaca data tabel](https://cloud.google.com/bigquery/docs/reference/storage/#enabling_the_api).

1. Di Google Cloud Platform, buat dan ekspor kredenSIAL akun layanan:

   Anda dapat menggunakan wizard BigQuery kredenSIAL untuk mempercepat langkah ini: [ Buat kredenSIAL. ](https://console.cloud.google.com/apis/credentials/wizard?api=bigquery.googleapis.com)

   Untuk membuat akun layanan di GCP, ikuti tutorial yang tersedia di [ Buat akun ](https://cloud.google.com/iam/docs/service-accounts-create) layanan.
   + Saat memilih ** proyek**, pilih proyek yang berisi BigQuery tabel Anda.
   + Saat memilih peran GCP IAM untuk akun layanan Anda, tambahkan atau buat peran yang akan memberikan izin yang sesuai untuk menjalankan BigQuery pekerjaan untuk membaca, menulis, atau membuat BigQuery tabel.

   Untuk membuat kredenSIAL untuk akun layanan Anda, ikuti tutorial yang tersedia di [ Buat kunci akun layanan](https://cloud.google.com/iam/docs/keys-create-delete#creating).
   + Saat memilih jenis kunci, pilih ** JSON**.

   Anda sekarang seharusnya mengunduh file JSON dengan kredenSIAL untuk akun layanan Anda. Itu terlihat serupa dengan yang berikut ini:

   ```
   {
     "type": "service_account",
     "project_id": "*****",
     "private_key_id": "*****",
     "private_key": "*****",
     "client_email": "*****",
     "client_id": "*****",
     "auth_uri": "https://accounts.google.com/o/oauth2/auth",
     "token_uri": "https://oauth2.googleapis.com/token",
     "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
     "client_x509_cert_url": "*****",
     "universe_domain": "googleapis.com"
   }
   ```

1. Unggah file JSON kredensional Anda ke lokasi Amazon S3 yang aman dengan tepat. Pertahankan jalur ke file, {{s3secretpath}} untuk langkah selanjutnya.

1. Di AWS Secrets Manager, buat rahasia menggunakan kredenSIAL Google Cloud Platform Anda. Untuk membuat rahasia di Secrets Manager, ikuti tutorial yang tersedia di [ Buat AWS Secrets Manager rahasia ](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) dalam AWS Secrets Manager dokumentasi. Setelah membuat rahasia, simpan nama Rahasia, {{secretName}} untuk langkah selanjutnya. 

   Saat membuat Key/value pasangan, tentukan kunci dan nilai sebagai berikut:
   + Untuk `client_id` kunci `token_uri``client_x509_cert_url`,`private_key_id`,`project_id`,`universe_domain`,,`auth_provider_x509_cert_url`,`auth_uri`,`client_email`,`private_key`,`type`,,, tentukan nilai yang sesuai dalam file JSON yang diunduh.
   + Untuk `spark.hadoop.google.cloud.auth.service.account.json.keyfile` kunci, tentukan{{s3secretpath}}.

1. Di Katalog Data AWS Glue, buat koneksi dengan mengikuti langkah-langkah di[Menambahkan AWS Glue koneksi](console-connections.md). Setelah membuat koneksi, simpan nama koneksi,{{connectionName}}, untuk langkah selanjutnya. 
   + Saat memilih jenis ** koneksi**, pilih Google BigQuery.
   + Saat memilih **AWS Rahasia**, berikan{{secretName}}.

1. Berikan peran IAM yang terkait dengan izin pekerjaan AWS Glue Anda untuk membaca{{secretName}}.

1. Dalam konfigurasi pekerjaan AWS Glue Anda, berikan {{connectionName}} sebagai koneksi jaringan ** tambahan**.

## Membaca dari BigQuery tabel
<a name="aws-glue-programming-etl-connect-bigquery-read"></a>

**Prasyarat: ** 
+  BigQuery Tabel yang ingin Anda baca. Anda akan memerlukan nama BigQuery tabel dan dataset, dalam formulir`[dataset].[table]`. Mari kita sebut ini{{tableName}}.
+ Proyek penagihan untuk BigQuery tabel. Anda akan membutuhkan nama proyek,{{parentProject}}. Jika tidak ada proyek induk penagihan, gunakan proyek yang berisi tabel.
+ BigQuery informasi otentikasi. Selesaikan langkah-langkah * Untuk mengelola kredenSIAL koneksi Anda dengan AWS Glue * untuk mengonfigurasi informasi autentikasi Anda. Anda akan membutuhkan nama koneksi AWS Glue,{{connectionName}}. 

Contoh: 

```
bigquery_read = glueContext.create_dynamic_frame.from_options(
    connection_type="bigquery",
    connection_options={
        "connectionName": "{{connectionName}}",
        "parentProject": "{{parentProject}}",
        "sourceType": "table",
        "table": "{{tableName}}",
    }
```

Anda juga dapat memberikan kueri, untuk memfilter hasil yang dikembalikan ke Anda DynamicFrame. Anda perlu mengkonfigurasi`query`,`sourceType`, `viewsEnabled` dan`materializationDataset`.

Contoh:

**Prasyarat tambahan: **

Anda perlu membuat atau mengidentifikasi BigQuery dataset,{{materializationDataset}}, di mana BigQuery dapat menulis tampilan yang terwujud untuk kueri Anda.

Anda harus memberikan izin GCP IAM yang sesuai ke akun layanan Anda untuk membuat tabel. {{materializationDataset}}

```
glueContext.create_dynamic_frame.from_options(
            connection_type="bigquery",
            connection_options={
                "connectionName": "{{connectionName}}",
                "materializationDataset": {{materializationDataset}},
                "parentProject": "{{parentProject}}",
                "viewsEnabled": "true",
                "sourceType": "query",
                "query": "select * from bqtest.test"
            }
        )
```

## Menulis ke BigQuery tabel
<a name="aws-glue-programming-etl-connect-bigquery-write"></a>

Contoh ini menulis langsung ke BigQuery layanan. BigQuery juga mendukung metode penulisan “tidak langsung”. Untuk informasi selengkapnya tentang mengkonfigurasi penulisan tidak langsung, lihat[Menggunakan menulis tidak langsung dengan Google BigQuery](#aws-glue-programming-etl-connect-bigquery-indirect-write).

**Prasyarat: ** 
+ Me BigQuery ja yang ingin Anda tulis. Anda akan memerlukan nama BigQuery tabel dan dataset, dalam formulir`[dataset].[table]`. Anda juga dapat memberikan nama tabel baru yang akan dibuat secara otomatis. Mari kita sebut ini{{tableName}}.
+ Proyek penagihan untuk BigQuery tabel. Anda akan membutuhkan nama proyek,{{parentProject}}. Jika tidak ada proyek induk penagihan, gunakan proyek yang berisi tabel.
+ BigQuery informasi otentikasi. Selesaikan langkah-langkah * Untuk mengelola kredenSIAL koneksi Anda dengan AWS Glue * untuk mengonfigurasi informasi autentikasi Anda. Anda akan membutuhkan nama koneksi AWS Glue,{{connectionName}}. 

Contoh: 

```
bigquery_write = glueContext.write_dynamic_frame.from_options(
    frame={{frameToWrite}},
    connection_type="bigquery",
    connection_options={
        "connectionName": "{{connectionName}}",
        "parentProject": "{{parentProject}}",
        "writeMethod": "direct",
        "table": "{{tableName}}",
    }
)
```

## BigQuery referensi opsi koneksi
<a name="aws-glue-programming-etl-connect-bigquery-reference"></a>
+ `project`— Default: default akun layanan Google Cloud. Digunakan untuk Read/Write. Nama proyek Google Cloud yang terkait dengan tabel Anda.
+ `table`— (Diperlukan) Digunakan untuk Read/Write. Nama BigQuery tabel Anda dalam format`[[project:]dataset.]`.
+ `dataset`— Diperlukan bila tidak ditentukan melalui `table` opsi. Digunakan untuk Read/Write. Nama dataset yang berisi BigQuery tabel Anda.
+ `parentProject`— Default: default akun layanan Google Cloud. Digunakan untuk Read/Write. Nama proyek Google Cloud yang terkait dengan `project` digunakan untuk penagihan.
+ `sourceType`— Digunakan untuk membaca. Diperlukan saat membaca. Nilai yang Valid:`table`, `query` Menginformasikan AWS Glue apakah Anda akan membaca berdasarkan tabel atau dengan kueri. 
+ `materializationDataset`— Digunakan untuk membaca. Nilai yang Valid: string. Nama BigQuery dataset yang digunakan untuk menyimpan materialisasi untuk tampilan.
+ `viewsEnabled`— Digunakan untuk membaca. Default: false. Nilai yang Valid: benar, salah. Mengkonfigurasi apakah BigQuery akan menggunakan tampilan. 
+ `query`— Digunakan untuk membaca. Digunakan ketika `viewsEnabled` itu benar. Kueri GoogleSQL DQL.
+ `temporaryGcsBucket`Digunakan untuk menulis. Diperlukan saat `writeMethod` diatur ke default (`indirect`). Nama bucket Google Cloud Storage yang digunakan untuk menyimpan bentuk perantara data Anda saat menulis ke BigQuery.
+ `writeMethod`— Default:`indirect`. Nilai yang Valid:`direct`,`indirect`. Digunakan untuk menulis. Menentukan metode yang digunakan untuk menulis data Anda.
  + Jika disetel ke`direct`, konektor Anda akan menulis menggunakan BigQuery Storage Write API.
  + Jika diset `indirect` el ke, konektor Anda akan menulis ke Google Cloud Storage, lalu mentransfer BigQuery nya menggunakan operasi beban. Akun layanan Google Cloud Anda akan memerlukan izin GCS yang sesuai.

## Menggunakan menulis tidak langsung dengan Google BigQuery
<a name="aws-glue-programming-etl-connect-bigquery-indirect-write"></a>

Contoh ini menggunakan penulisan tidak langsung, yang menulis data ke Google Cloud Storage dan menyalinnya ke Google BigQuery.

**Prasyarat: **

Anda akan memerlukan bucket Google Cloud Storage sementara,{{temporaryBucket}}.

Peran GCP IAM untuk AWS akun layanan GCP Glue akan memerlukan izin GCS yang sesuai untuk mengakses. {{temporaryBucket}}

**Konfigurasi Tambahan: **

**Untuk mengkonfigurasi penulisan tidak langsung dengan BigQuery:**

1. Nilai [Mengkonfigurasi BigQuery koneksi](#aws-glue-programming-etl-connect-bigquery-configure) dan cari atau unduh ulang file JSON kredenSIAL GCP Anda. Identi {{secretName}} fikasi, AWS Secrets Manager rahasia untuk koneksi Google BigQuery AWS Glue yang digunakan dalam pekerjaan Anda.

1. Unggah file JSON kredensional Anda ke lokasi Amazon S3 yang aman dengan tepat. Pertahankan jalur ke file, {{s3secretpath}} untuk langkah selanjutnya.

1. Edit{{secretName}}, menambahkan `spark.hadoop.google.cloud.auth.service.account.json.keyfile` kunci. Atur nilai ke {{s3secretpath}}.

1. Berikan izin akses {{s3secretpath}} Amazon S3 IAM untuk pekerjaan AWS Glue Anda.

Anda sekarang dapat memberikan lokasi bucket GCS sementara ke metode penulisan Anda. Anda tidak perlu memberikan`writeMethod`, seperti yang secara histor `indirect` is merupakan default.

```
bigquery_write = glueContext.write_dynamic_frame.from_options(
    frame={{frameToWrite}},
    connection_type="bigquery",
    connection_options={
        "connectionName": "{{connectionName}}",
        "parentProject": "{{parentProject}}",
        "temporaryGcsBucket": "{{temporaryBucket}}",
        "table": "{{tableName}}",
    }
)
```