

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

# Connect ke sumber data
<a name="work-with-data-stores"></a>

Anda dapat menggunakan Amazon Athena untuk kueri data yang disimpan di lokasi dan format yang berbeda dalam *set data*. Set data ini mungkin dalam CSV, JSON, Avro, Parquet, atau beberapa format lainnya.

Tabel dan basis data yang Anda gunakan untuk bekerja di Athena untuk menjalankan kueri didasarkan pada *metadata*. Metadata adalah data tentang data yang mendasari dalam set data Anda. Bagaimana metadata tersebut menggambarkan set data Anda disebut *skema*. Sebagai contoh, nama tabel, nama kolom dalam tabel, dan tipe data dari setiap kolom adalah skema, disimpan sebagai metadata, yang menggambarkan set data yang mendasari. Di Athena, kita memanggil sistem untuk mengatur metadata *katalog data* atau *metastore*. Kombinasi dari set data dan katalog data yang menggambarkannya disebut *sumber data*.

Hubungan metadata ke set data yang mendasari tergantung tipe sumber data yang Anda gunakan. Sumber data relasional seperti MySQL, PostgreSQL, dan SQL Server erat mengintegrasikan metadata dengan set data. Dalam sistem ini, metadata paling sering ditulis saat data ditulis. Sumber data lain, seperti yang dibuat menggunakan [Hive](https://hive.apache.org), memungkinkan Anda menentukan metadata on-the-fly saat membaca kumpulan data. Set data dapat dalam berbagai format, misalnya, CSV, JSON, Parquet, atau Avro.

Athena secara asli mendukung. AWS Glue Data Catalog AWS Glue Data Catalog Ini adalah katalog data yang dibangun di atas kumpulan data dan sumber data lain seperti Amazon S3, Amazon Redshift, dan Amazon DynamoDB. Anda juga dapat menghubungkan Athena ke sumber data lain dengan menggunakan berbagai konektor.

**Topics**
+ [Gunakan AWS Glue Data Catalog untuk terhubung ke data Anda](data-sources-glue.md)
+ [Gunakan Kueri Federasi Amazon Athena](federated-queries.md)
+ [Gunakan Amazon DataZone di Athena](datazone-using.md)
+ [Gunakan metastore Hive eksternal](connect-to-data-source-hive.md)
+ [Kelola sumber data Anda](data-sources-managing.md)

# Gunakan AWS Glue Data Catalog untuk terhubung ke data Anda
<a name="data-sources-glue"></a>

Athena menggunakan metadata AWS Glue Data Catalog untuk menyimpan seperti nama tabel dan kolom untuk data yang disimpan di Amazon S3. Informasi metadata ini menjadi database, tabel, dan tampilan yang Anda lihat di editor kueri Athena.

Saat menggunakan Athena dengan AWS Glue Data Catalog, Anda dapat menggunakan AWS Glue untuk membuat database dan tabel (skema) untuk ditanyakan di Athena, atau Anda dapat menggunakan Athena untuk membuat skema dan kemudian menggunakannya di dan layanan terkait. AWS Glue 

Untuk menentukan informasi skema AWS Glue, Anda dapat menggunakan formulir di konsol Athena, menggunakan editor kueri di Athena, atau membuat AWS Glue crawler di konsol. AWS Glue AWS Glue crawler secara otomatis menyimpulkan skema database dan tabel dari data Anda di Amazon S3. Menggunakan formulir menawarkan lebih banyak penyesuaian. Menulis `CREATE TABLE` pernyataan Anda sendiri membutuhkan lebih banyak usaha, tetapi menawarkan kontrol paling besar. Untuk informasi selengkapnya, lihat [CREATE TABLE](create-table.md).

## Sumber Daya Tambahan
<a name="glue-additional-resources"></a>
+ Untuk informasi selengkapnya tentang AWS Glue Data Catalog, lihat [Katalog Data dan crawler AWS Glue di](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html) *Panduan AWS Glue Pengembang*.
+ Untuk artikel ilustrasi yang menunjukkan cara menggunakan AWS Glue dan Athena untuk memproses data XHTML, [lihat Memproses dan menganalisis file XHTML yang sangat bersarang dan besar menggunakan dan AWS Glue Amazon Athena](https://aws.amazon.com/blogs/big-data/process-and-analyze-highly-nested-and-large-xml-files-using-aws-glue-and-amazon-athena/) di Big Data Blog. AWS 
+ Biaya terpisah berlaku untuk AWS Glue. Untuk informasi selengkapnya, lihat [harga AWS Glue](https://aws.amazon.com/glue/pricing).

**Topics**
+ [Sumber Daya Tambahan](#glue-additional-resources)
+ [Daftarkan dan gunakan katalog data di Athena](gdc-register.md)
+ [Daftarkan Katalog Data dari akun lain](data-sources-glue-cross-account.md)
+ [Kontrol akses ke katalog data dengan kebijakan IAM](datacatalogs-iam-policy.md)
+ [Gunakan formulir di konsol Athena untuk menambahkan tabel AWS Glue](data-sources-glue-manual-table.md)
+ [Gunakan crawler untuk menambahkan tabel](schema-crawlers.md)
+ [Optimalkan kueri dengan pengindeksan dan AWS Glue pemfilteran partisi](glue-best-practices-partition-index.md)
+ [Gunakan AWS CLI untuk membuat ulang AWS Glue database dan tabelnya](glue-recreate-db-and-tables-cli.md)
+ [Buat tabel untuk pekerjaan ETL](schema-classifier.md)
+ [Bekerja dengan data CSV di AWS Glue](schema-csv.md)
+ [Bekerja dengan data geospasial di AWS Glue](schema-geospatial.md)

# Daftarkan dan gunakan katalog data di Athena
<a name="gdc-register"></a>

Athena mendukung pemasangan dan penghubung ke beberapa katalog data. 
+ Anda dapat memasang data Amazon Redshift di AWS Glue Data Catalog dan menanyakannya dari Athena tanpa harus menyalin atau memindahkan data. Untuk informasi selengkapnya, lihat [Membawa data Amazon Redshift ke dalam](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-namespaces-datacatalog.html). AWS Glue Data Catalog
+  Hubungkan AWS Glue Data Catalog ke sumber data eksternal menggunakan AWS Glue koneksi, dan buat katalog federasi untuk mengelola izin data secara terpusat dengan kontrol akses berbutir halus menggunakan Lake Formation. Untuk informasi selengkapnya, lihat [Daftarkan koneksi Anda sebagai Glue Data Catalog](register-connection-as-gdc.md).
+ Buat katalog dari bucket tabel Amazon S3, dan gunakan Lake Formation untuk mengelola izin akses secara terpusat dan membatasi akses pengguna ke objek di dalam bucket tabel. Untuk informasi selengkapnya, lihat [Bekerja dengan Tabel Amazon S3 dan bucket tabel di Panduan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables.html) Pengguna Amazon S3.

**catatan**  
Untuk katalog Glue apa pun, Anda hanya dapat mendaftarkan katalog multi-level seperti`123412341234:my_catalog/my_child`. Anda tidak dapat mendaftarkan katalog tingkat tunggal seperti `123412341234:linkcontainer` atau`my_catalog`. Katalog tingkat tunggal hanya dapat ditanyakan dengan menggunakan katalog data Glue langsung di kueri Athena. Untuk informasi selengkapnya, lihat [Katalog AWS Glue data kueri di Athena](gdc-register-query-the-data-source.md). 

**Topics**
+ [Daftarkan katalog data Redshift di Athena](gdc-register-rs.md)
+ [Daftarkan katalog federasi di Athena](gdc-register-federated.md)
+ [Daftarkan katalog bucket tabel S3 dan kueri Tabel dari Athena](gdc-register-s3-table-bucket-cat.md)
+ [Katalog AWS Glue data kueri di Athena](gdc-register-query-the-data-source.md)

# Daftarkan katalog data Redshift di Athena
<a name="gdc-register-rs"></a>

Athena dapat membaca dan menulis data yang disimpan dalam cluster Redshift atau ruang nama tanpa server yang telah terdaftar di. AWS Glue Data Catalog Ini bekerja bersama-sama dengan AWS Lake Formation, yang menyediakan keamanan dan tata kelola terpusat, memastikan bahwa akses data dikelola secara konsisten di berbagai mesin kueri dan mempertahankan kontrol akses berbutir halus untuk data Redshift bersama.

## Pertimbangan dan batasan
<a name="gdc-register-rs-considerations-and-limitations"></a>
+ **Tampilan terwujud — Tampilan terwujud** Amazon Redshift dapat ditanyakan dari Athena tetapi membuat tampilan terwujud menggunakan Athena atau Spark tidak didukung.
+ Operasi DDL, termasuk pengaturan AWS Glue Data Catalog konfigurasi dan operasi pada tabel penyimpanan terkelola Amazon Redshift, tidak didukung.

## Prasyarat
<a name="gdc-register-rs-prerequisites"></a>

Sebelum Anda dapat menanyakan katalog AWS Glue data dari Athena, selesaikan tugas-tugas berikut:

1. Buat dan daftarkan cluster Amazon Redshift atau namespace tanpa server ke. AWS Glue Data Catalog Untuk informasi selengkapnya, lihat [Mendaftarkan klaster ke AWS Glue Data Catalog](https://docs.aws.amazon.com/redshift/latest/mgmt/register-cluster.html) atau [Mendaftarkan ruang nama ke AWS Glue Data Catalog dalam panduan](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless_datasharing-register-namespace.html) Manajemen Pergeseran Merah Amazon.

1. Buat katalog data AWS Lake Formation dari namespace terdaftar. Untuk informasi selengkapnya, lihat [Membuat katalog gabungan Amazon Redshift di Panduan](https://docs.aws.amazon.com/lake-formation/latest/dg/create-ns-catalog.html) Pengembang. AWS Lake Formation 

1. (Opsional) Gunakan Lake Formation untuk mengatur kontrol akses berbutir halus pada katalog. Untuk informasi selengkapnya, lihat [Membawa data Anda ke AWS Glue Data Catalog](https://docs.aws.amazon.com/lake-formation/latest/dg/bring-your-data-overview.html) dalam Panduan AWS Lake Formation Pengembang.

## Daftarkan katalog data Redshift dengan konsol Athena
<a name="gdc-register-rs-console-steps"></a>

Untuk mendaftarkan katalog data Redshift dengan konsol Athena, lakukan langkah-langkah berikut.

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih **Buat sumber data**.

1. Untuk **Pilih sumber data**, pilih **Amazon S3** -. AWS Glue Data Catalog

1. Di **AWS Glue Data Catalog**bagian ini, untuk **Akun sumber data**, pilih **AWS Glue Data Catalog di akun ini**.

1. Untuk **Buat tabel atau daftarkan katalog**, pilih **Daftarkan AWS Glue Katalog baru**.

1. Di bagian **Rincian sumber data****, untuk nama sumber data**, masukkan nama yang ingin Anda gunakan untuk menentukan sumber data dalam kueri SQL Anda atau gunakan nama default yang dihasilkan.

1. Untuk **Katalog**, pilih **Jelajahi** untuk mencari daftar AWS Glue katalog di akun yang sama. [Jika Anda tidak melihat katalog yang ada, buat katalog di AWS Glue konsol.](https://console.aws.amazon.com/glue/) 

1. **Dalam kotak dialog **Jelajahi AWS Glue katalog**, pilih katalog yang ingin Anda gunakan, lalu pilih Pilih.**

1. (Opsional) Untuk **Tag**, masukkan key/value pasangan apa pun yang ingin Anda kaitkan dengan sumber data.

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, verifikasi bahwa informasi yang Anda masukkan sudah benar, lalu pilih **Buat sumber data**.

# Daftarkan katalog federasi di Athena
<a name="gdc-register-federated"></a>

Setelah membuat koneksi ke sumber data federasi, Anda dapat mendaftarkannya sebagai katalog data federasi untuk penemuan data yang disederhanakan dan mengelola akses data dengan izin halus menggunakan Lake Formation. Untuk informasi selengkapnya, lihat [Daftarkan koneksi Anda sebagai Glue Data Catalog](register-connection-as-gdc.md).

## Pertimbangan dan batasan
<a name="gdc-register-federated-consideration"></a>
+ Operasi DDL tidak didukung pada katalog federasi. 
+ Anda dapat mendaftarkan konektor berikut untuk diintegrasikan dengan kontrol AWS Glue akses berbutir halus:
  + [Penyimpanan Danau Data Azure](connectors-adls-gen2.md)
  + [Sinaps Azure](connectors-azure-synapse.md)
  + [BigQuery](connectors-bigquery.md)
  + [CMDB](connectors-cmdb.md)
  + [Db2](connectors-ibm-db2.md)
  + [Db2 iSeries](connectors-ibm-db2-as400.md)
  + [DocumentDB](connectors-docdb.md)
  + [DynamoDB](connectors-dynamodb.md)
  + [Penyimpanan Awan Google](connectors-gcs.md)
  + [HBase](connectors-hbase.md)
  + [MySQL](connectors-mysql.md)
  + [OpenSearch](connectors-opensearch.md)
  + [Oracle](connectors-oracle.md)
  + [PostgreSQL](connectors-postgresql.md)
  + [Pergeseran Merah](connectors-redshift.md)
  + [SAP HANA](connectors-sap-hana.md)
  + [Kepingan salju](connectors-snowflake.md)
  + [SQL Server](connectors-microsoft-sql-server.md)
  + [Aliran waktu](connectors-timestream.md)
  + [TPC-DS](connectors-tpcds.md)
+ Saat Anda membuat tautan sumber daya untuk federasi koneksi Glue, nama [tautan sumber daya](https://docs.aws.amazon.com/lake-formation/latest/dg/create-resource-link-database.html) harus sama dengan nama database produsen.
+ Saat ini, hanya nama tabel dan kolom huruf kecil yang dikenali meskipun sumber data tidak peka huruf besar/kecil.

# Daftarkan katalog bucket tabel S3 dan kueri Tabel dari Athena
<a name="gdc-register-s3-table-bucket-cat"></a>

Bucket tabel Amazon S3 adalah jenis bucket di Amazon S3 yang dibuat khusus untuk menyimpan data tabular di tabel Apache Iceberg. Bucket tabel mengotomatiskan tugas manajemen tabel seperti pemadatan, manajemen snapshot, dan pengumpulan sampah untuk terus mengoptimalkan kinerja kueri dan meminimalkan biaya. Baik Anda baru memulai, atau memiliki ribuan tabel di lingkungan Gunung Es Anda, bucket tabel menyederhanakan data lake pada skala apa pun. Untuk informasi selengkapnya, lihat [Bucket tabel](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html).

## Pertimbangan dan batasan
<a name="gdc-register-s3-table-consideration"></a>
+ Semua operasi DDL yang didukung untuk tabel Iceberg didukung untuk Tabel S3 dengan pengecualian berikut:
  + `ALTER TABLE RENAME`,`CREATE VIEW`, dan `ALTER DATABASE` tidak didukung.
  + `OPTIMIZE`dan `VACUUM` - Anda dapat mengelola manajemen pemadatan dan snapshot di S3. Untuk informasi selengkapnya, lihat [dokumentasi pemeliharaan Tabel S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance.html).
+ Kueri DDL pada Tabel S3 yang terdaftar sebagai sumber data Athena tidak didukung.
+ Penggunaan kembali hasil kueri tidak didukung.
+ Dalam kelompok kerja dengan SSE-KMS, enkripsi CSE-KMS diaktifkan, Anda tidak dapat menjalankan operasi tulis seperti`INSERT`,,, atau pada Tabel S3. `UPDATE` `DELETE` `MERGE`
+ Dalam kelompok kerja dengan opsi S3 Requester Pays diaktifkan, Anda tidak dapat menjalankan operasi DMLpada Tabel S3.

## Kueri Tabel S3 dari Athena
<a name="gdc-register-s3-table-prereq-setup"></a>

**Selesaikan langkah-langkah prasyarat ini sebelum Anda menanyakan Tabel S3 di Athena**

1. Buat ember meja S3. Untuk informasi selengkapnya, lihat [Membuat bucket tabel](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-create.html) di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon. 

1. Pastikan integrasi bucket meja Anda berhasil. AWS Glue Data Catalog Untuk izin dan langkah penyiapan yang diperlukan, lihat [Prasyarat untuk integrasi Tabel S3 dan Mengaktifkan integrasi Tabel S3](https://docs.aws.amazon.com/glue/latest/dg/s3tables-catalog-prerequisites.html) [dengan Katalog Data Glue di Panduan](https://docs.aws.amazon.com/glue/latest/dg/enable-s3-tables-catalog-integration.html) Pengembang. AWS Glue 

1. Untuk prinsipal yang Anda gunakan untuk menjalankan kueri dengan Athena, berikan izin pada katalog Tabel S3 menggunakan salah satu pendekatan berikut: 

   **Opsi 1: Gunakan izin IAM**

   Saat menggunakan kontrol akses IAM, prinsipal Anda memerlukan izin pada AWS Glue Data Catalog sumber daya dan sumber daya Amazon S3 Tabel.

   Daftar berikut berisi semua `s3tables` izin yang diperlukan untuk melakukan operasi DDL atau DHTML yang didukung terhadap Tabel S3 Anda di Athena:
   + `s3tables:GetTableBucket`
   + `s3tables:GetNamespace`
   + `s3tables:GetTable`
   + `s3tables:GetTableData`
   + `s3tables:PutTableData`
   + `s3tables:ListNamespaces`
   + `s3tables:ListTables`
   + `s3tables:DeleteNamespace`
   + `s3tables:DeleteTable`
   + `s3tables:CreateNamespace`
   + `s3tables:CreateTable`
   + `s3tables:UpdateTableMetadataLocation`

   Terapkan izin ini ke bucket tabel S3 tertentu dan sumber daya Tabel S3 atau gunakan `*` sebagai sumber daya untuk memberikan akses ke semua bucket dan tabel tabel di akun Anda. Izin ini dapat digabungkan dengan kebijakan [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)terkelola untuk mengaktifkan fungsionalitas lengkap.

   **Opsi 2: Gunakan izin Lake Formation**

   Atau, untuk mengaktifkan kontrol akses berbutir halus, Anda dapat memberikan izin Lake Formation pada katalog Tabel S3, baik melalui konsol Lake Formation atau. AWS CLI Ini memerlukan pendaftaran bucket tabel S3 Anda sebagai lokasi data Lake Formation. Untuk informasi selengkapnya, lihat [Membuat katalog Tabel Amazon S3 AWS Glue Data Catalog di Panduan](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html) Pengembang Lake Formation.

------
#### [ Konsol Manajemen AWS ]

   1. Buka AWS Lake Formation konsol di [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) dan masuk sebagai administrator danau data. Untuk informasi selengkapnya tentang cara membuat administrator data lake, lihat [Membuat administrator data lake](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin).

   1. **Di panel navigasi, pilih **Izin data** lalu pilih Hibah.** 

   1. Pada halaman **Izin Hibah**, di bawah **Prinsipal**, pilih prinsipal yang ingin Anda gunakan untuk mengirimkan kueri dari Athena.

   1. Di bawah **LF-tag atau sumber katalog, pilih Sumber daya Katalog** **Data Bernama**.

   1. Untuk **Katalog**, pilih katalog data lem yang Anda buat dari integrasi bucket meja Anda. Misalnya *<accoundID>* ,:s3tablescatalog/. *amzn-s3-demo-bucket*

   1. Untuk **izin Katalog**, pilih **Super**.

   1. Pilih**Izin**.

------
#### [ AWS CLI ]

   Jalankan perintah berikut dengan peran administrator danau data Lake Formation untuk memberikan akses ke kepala sekolah yang Anda gunakan untuk mengirimkan kueri dari Athena. 

   ```
   aws lakeformation grant-permissions \
   --region <region (Example,us-east-1)> \
   --cli-input-json \
   '{
       "Principal": {
           "DataLakePrincipalIdentifier": "<user or role ARN (Example, arn:aws:iam::<Account ID>:role/ExampleRole>"
       },
       "Resource": {
           "Catalog": {
               "Id":"<Account ID>:s3tablescatalog/amzn-s3-demo-bucket"
           }
       },
       "Permissions": ["ALL"]
   }'
   ```

------

**Kirim kueri untuk Tabel S3**

1. Kirim `CREATE DATABASE` kueri dari Athena dengan pengguna/peran yang diberikan di atas. Dalam contoh ini, `s3tablescatalog` adalah Katalog Data Glue induk yang dibuat dari integrasi dan ` s3tablescatalog/amzn-s3-demo-bucket` merupakan Katalog Data Glue anak yang dibuat untuk setiap bucket tabel S3. Ada dua cara di mana Anda dapat menanyakan.

------
#### [ Option 1 ]

   Tentukan anak Glue Data Catalog (`s3tablescatalog/amzn-s3-demo-bucket`) langsung dari konsol atau AWS CLI.

   **Menggunakan Konsol Manajemen AWS**

   1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

   1. Di navigasi kiri, untuk **nama sumber data**, pilih **AwsDataCatalog**.

   1. Untuk **Katalog**, pilih ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Di editor kueri, masukkan kueri seperti`CREATE DATABASE test_namespace`.

   **Menggunakan AWS CLI**

   Jalankan perintah berikut.

   ```
   aws athena start-query-execution \ 
   --query-string 'CREATE DATABASE `test_namespace`' \ 
   --query-execution-context '{"Catalog": "s3tablescatalog/amzn-s3-demo-bucket"}' \
   --work-group "primary"
   ```

------
#### [ Option 2 ]

   Buat katalog data Athena dari Katalog Data Glue anak di konsol Athena dan tentukan sebagai katalog dalam kueri. Untuk informasi selengkapnya, lihat [Daftarkan katalog bucket tabel S3 sebagai sumber data Athena](#gdc-register-s3-table-console-steps).

------

1. Dengan database yang Anda buat pada langkah sebelumnya, gunakan `CREATE TABLE` untuk membuat tabel. Contoh berikut membuat tabel dalam *`test_namespace`* database yang sebelumnya Anda buat di katalog `s3tablescatalog/amzn-s3-demo-bucket` Glue.

------
#### [ Konsol Manajemen AWS ]

   1. Di navigasi kiri, untuk **nama sumber data**, pilih **AwsDataCatalog**.

   1. Untuk **Katalog**, pilih ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Untuk **Database**, pilih **test\$1namespace**.

   1. Di editor kueri, jalankan kueri berikut.

      ```
      CREATE TABLE daily_sales (
              sale_date date,
              product_category
              string, sales_amount double)
      PARTITIONED BY (month(sale_date))
      TBLPROPERTIES ('table_type' = 'iceberg')
      ```

------
#### [ AWS CLI ]

   Jalankan perintah berikut.

   ```
   aws athena start-query-execution \
   --query-string "CREATE TABLE daily_sales (
           sale_date date,
           product_category
           string, sales_amount double)
   PARTITIONED BY (month(sale_date))
   TBLPROPERTIES ('table_type' = 'iceberg')" \
   --query-execution-context '{"Catalog": "s3tablescatalog/amzn-s3-demo-bucket", "Database":"test_namespace"}' \
   --work-group "primary"
   ```

------

1. Masukkan data ke dalam tabel yang Anda buat pada langkah sebelumnya.

------
#### [ Konsol Manajemen AWS ]

   1. Di navigasi kiri, untuk **nama sumber data**, pilih **AwsDataCatalog**.

   1. Untuk **Katalog**, pilih ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Untuk **Database**, pilih **test\$1namespace**.

   1. Di editor kueri, jalankan kueri berikut.

      ```
      INSERT INTO daily_sales
      VALUES 
          (DATE '2024-01-15', 'Laptop', 900.00),
          (DATE '2024-01-15', 'Monitor', 250.00),
          (DATE '2024-01-16', 'Laptop', 1350.00),
          (DATE '2024-02-01', 'Monitor', 300.00);
      ```

------
#### [ AWS CLI ]

   Jalankan perintah berikut.

   ```
   aws athena start-query-execution \
   --query-string "INSERT INTO \"s3tablescatalog/amzn-s3-demo-bucket\".test_namespace.daily_sales
   VALUES 
   (DATE '2024-01-15', 'Laptop', 900.00),
   (DATE '2024-01-15', 'Monitor', 250.00),
   (DATE '2024-01-16', 'Laptop', 1350.00),
   (DATE '2024-02-01', 'Monitor', 300.00)"\ 
   --work-group "primary"
   ```

------

1. Setelah memasukkan data ke dalam tabel, Anda dapat menanyakannya.

------
#### [ Konsol Manajemen AWS ]

   1. Di navigasi kiri, untuk **nama sumber data**, pilih **AwsDataCatalog**.

   1. Untuk **Katalog**, pilih ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Untuk **Database**, pilih **test\$1namespace**.

   1. Di editor kueri, jalankan kueri berikut.

      ```
      SELECT
          product_category,
          COUNT(*) AS units_sold,
          SUM(sales_amount) AS total_revenue,
          AVG(sales_amount) AS average_price
      FROM
          daily_sales
      WHERE
          sale_date BETWEEN DATE '2024-02-01' 
                       AND DATE '2024-02-29'
      GROUP BY
          product_category
      ORDER BY
          total_revenue DESC
      ```

------
#### [ AWS CLI ]

   Jalankan perintah berikut.

   ```
   aws athena start-query-execution \
   --query-string "SELECT product_category,
       COUNT(*) AS units_sold,
       SUM(sales_amount) AS total_revenue,
       AVG(sales_amount) AS average_price
   FROM \"s3tablescatalog/amzn-s3-demo-bucket\".test_namespace.daily_sales
   WHERE sale_date BETWEEN DATE '2024-02-01' AND DATE '2024-02-29'
   GROUP BY product_category
   ORDER BY total_revenue DESC"\
   --work-group "primary"
   ```

------

## Buat Tabel S3 di Athena
<a name="gdc-create-s3-tables-athena"></a>

Athena mendukung pembuatan tabel di ruang nama Tabel S3 yang ada atau ruang nama yang dibuat di Athena dengan pernyataan. `CREATE DATABASE` Untuk membuat Tabel S3 dari Athena, sintaksnya sama seperti saat [Anda membuat tabel Iceberg biasa](querying-iceberg-creating-tables.md) kecuali Anda tidak menentukan, seperti yang ditunjukkan `LOCATION` pada contoh berikut.

```
CREATE TABLE
[db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] )
[PARTITIONED BY (col_name | transform, ... )]
[TBLPROPERTIES ([, property_name=property_value] )]
```

Anda juga dapat membuat Tabel S3 menggunakan pernyataan CREATE TABLE AS SELECT (CTAS). Untuk informasi selengkapnya, lihat [CTAS untuk Tabel S3](#ctas-s3-tables).

## Daftarkan katalog bucket tabel S3 sebagai sumber data Athena
<a name="gdc-register-s3-table-console-steps"></a>

Untuk mendaftarkan katalog bucket tabel S3 dengan konsol Athena, lakukan langkah-langkah berikut.

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih **Buat sumber data**.

1. Untuk **Pilih sumber data**, pilih **Amazon S3** -. AWS Glue Data Catalog

1. Di **AWS Glue Data Catalog**bagian ini, untuk **Akun sumber data**, pilih **AWS Glue Data Catalog di akun ini**.

1. Untuk **Buat tabel atau daftarkan katalog**, pilih **Daftarkan AWS Glue Katalog baru**.

1. Di bagian **Rincian sumber data****, untuk nama sumber data**, masukkan nama yang ingin Anda gunakan untuk menentukan sumber data dalam kueri SQL Anda atau gunakan nama default yang dihasilkan.

1. Untuk **Katalog**, pilih **Jelajahi** untuk mencari daftar AWS Glue katalog di akun yang sama. [Jika Anda tidak melihat katalog yang ada, buat katalog di AWS Glue konsol.](https://console.aws.amazon.com/glue/) 

1. **Dalam kotak dialog **Jelajahi AWS Glue katalog**, pilih katalog yang ingin Anda gunakan, lalu pilih Pilih.**

1. (Opsional) Untuk **Tag**, masukkan key/value pasangan apa pun yang ingin Anda kaitkan dengan sumber data.

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, verifikasi bahwa informasi yang Anda masukkan sudah benar, lalu pilih **Buat sumber data**.

## CTAS untuk Tabel S3
<a name="ctas-s3-tables"></a>

Amazon Athena sekarang mendukung operasi CREATE TABLE AS SELECT (CTAS) untuk Tabel S3. Fitur ini memungkinkan Anda membuat Tabel S3 baru berdasarkan hasil kueri SELECT. 

Saat membuat kueri CTAS untuk Tabel S3, ada beberapa perbedaan penting dibandingkan dengan tabel Athena standar:
+ Anda harus menghilangkan properti lokasi karena Tabel S3 secara otomatis mengelola lokasi penyimpanannya sendiri.
+ `table_type`Properti defaultnya`ICEBERG`, jadi Anda tidak perlu menentukannya secara eksplisit dalam kueri Anda.
+ Jika Anda tidak menentukan format, sistem secara otomatis menggunakan `PARQUET` sebagai format default untuk data Anda.
+ Semua properti lainnya mengikuti sintaks yang sama seperti tabel Iceberg biasa.

Sebelum Anda membuat Tabel S3 menggunakan CTAS, pastikan Anda memiliki izin yang diperlukan yang dikonfigurasi di IAM atau. AWS Lake Formation Secara khusus, Anda memerlukan izin untuk membuat tabel di katalog Tabel S3. Tanpa izin ini, operasi CTAS Anda akan gagal.

**catatan**  
Jika kueri CTAS gagal, Anda mungkin harus menghapus tabel menggunakan [API Tabel S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-delete.html) sebelum mencoba menjalankan kembali kueri Anda. Anda tidak dapat menggunakan `DROP TABLE` pernyataan Athena untuk menghapus tabel yang sebagian dibuat oleh kueri. 

**Contoh**

```
CREATE TABLE "s3tablescatalog/amzn-s3-demo-bucket"."namespace"."s3-table-name"
WITH (
    format = 'PARQUET'
)
AS SELECT *
FROM source_table;
```

# Katalog AWS Glue data kueri di Athena
<a name="gdc-register-query-the-data-source"></a>

Untuk menanyakan katalog data dari Athena, lakukan salah satu hal berikut.
+ Daftarkan katalog di Athena sebagai sumber data, lalu gunakan nama sumber data untuk menanyakan katalog. Dalam penggunaan ini, kueri berikut setara.

  ```
  SELECT * FROM my_data_source.my_database.my_table
  ```
+ Jika Anda menanyakan katalog yang belum terdaftar sebagai sumber data Athena, Anda dapat menyediakan jalur lengkap ke katalog dalam kueri `SELECT` Anda, seperti pada contoh berikut.

  ```
  SELECT * FROM "my_catalog/my_subcatalog".my_database.my_table
  ```
+ Anda juga dapat melakukan ini melalui Konsol Manajemen AWS.

  1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/)

  1. Di editor kueri, untuk **Sumber data**, pilih **AwsDataCatalog**.

  1. Untuk **Katalog**, pilih nama katalog yang ingin Anda gunakan.

  1. Untuk **Database**, pilih database yang berisi tabel yang ingin Anda kueri.

  1. Masukkan kueri seperti`SELECT * FROM my_table`, lalu pilih **Jalankan**.

# Daftarkan Katalog Data dari akun lain
<a name="data-sources-glue-cross-account"></a>

Anda dapat menggunakan fitur AWS Glue katalog lintas akun Athena untuk mendaftarkan AWS Glue katalog dari akun selain milik Anda. Setelah Anda mengonfigurasi izin IAM yang diperlukan untuk AWS Glue dan daftarkan katalog sebagai Athena`DataCatalog`Sumber daya, Anda dapat menggunakan Athena untuk menjalankan kueri lintas akun. Untuk informasi tentang izin IAM yang diperlukan, lihat [Konfigurasikan akses lintas akun ke katalog AWS Glue data](security-iam-cross-account-glue-catalog-access.md).

Prosedur berikut menunjukkan cara menggunakan Athena untuk mengonfigurasi akun AWS Glue Data Catalog Amazon Web Services selain milik Anda sebagai sumber data.

## Daftar dari konsol
<a name="data-sources-glue-cross-account-console"></a>

1. Ikuti langkah-langkah di[Konfigurasikan akses lintas akun ke katalog AWS Glue data](security-iam-cross-account-glue-catalog-access.md)Untuk memastikan bahwa Anda memiliki izin untuk meminta katalog data di akun lain.

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Pilih **Sumber data dan katalog**.

1. Di kanan atas, pilih **Buat sumber data**.

1. Pada halaman **Pilih sumber data**, untuk **Sumber data**, pilih **S3 - AWS Glue Data Catalog**, lalu pilih **Berikutnya**.

1. Pada halaman **Masukkan detail sumber data**, di **AWS Glue Data Catalog**bagian, untuk **Pilih AWS Glue Data Catalog**, pilih **AWS Glue Data Catalog di akun lain**.

1. Untuk **detail sumber data**, masukkan informasi berikut:
   + **Nama sumber data** — Masukkan nama yang ingin Anda gunakan dalam kueri SQL Anda untuk merujuk ke katalog data di akun lain.
   + **Deskripsi**— (Opsional) Masukkan deskripsi katalog data di akun lainnya.
   + **ID Katalog**— Masukkan 12 digit Amazon Web Services akun ID dari akun tempat katalog data berada. Amazon Web Services akun ID adalah ID katalog.

1. (Opsional) Untuk **Tag**, masukkan pasangan nilai kunci yang ingin Anda kaitkan dengan sumber data. Untuk informasi selengkapnya tentang tag, lihat [Tag sumber daya Athena](tags.md).

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, tinjau informasi yang Anda berikan, lalu pilih **Buat sumber data**. Halaman **detail sumber data** mencantumkan database dan tag untuk katalog data yang Anda daftarkan.

1. Pilih **Sumber data dan katalog**. Katalog data yang Anda daftarkan tercantum di kolom **Nama sumber data**.

1. Untuk melihat atau mengedit informasi tentang katalog data, pilih katalog, lalu pilih **Tindakan**, **Edit**.

1. Untuk menghapus katalog data baru, pilih katalog, lalu pilih **Tindakan**, **Hapus**.

## Daftar menggunakan operasi API
<a name="data-sources-glue-cross-account-api"></a>

1. Badan `CreateDataCatalog` permintaan berikut mendaftarkan AWS Glue katalog untuk akses lintas akun:

   ```
   # Example CreateDataCatalog request to register a cross-account Glue catalog:
   {
       "Description": "Cross-account Glue catalog",
       "Name": "ownerCatalog",
       "Parameters": {"catalog-id" : "<catalogid>"  # Owner's account ID
       },
       "Type": "GLUE"
   }
   ```

1. Kode contoh berikut menggunakan klien Java untuk membuat`DataCatalog`objek.

   ```
   # Sample code to create the DataCatalog through Java client
   CreateDataCatalogRequest request = new CreateDataCatalogRequest()
       .withName("ownerCatalog")
       .withType(DataCatalogType.GLUE)
       .withParameters(ImmutableMap.of("catalog-id", "<catalogid>"));
   
   athenaClient.createDataCatalog(request);
   ```

   Setelah langkah-langkah ini, peminjam akan melihat *`ownerCatalog`* kapan memanggil operasi [ListDataCatalogs](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListDataCatalogs.html)API.

## Daftar menggunakan AWS CLI
<a name="data-sources-glue-cross-account-cli"></a>

Gunakan perintah CLI contoh followig untuk mendaftarkan dari akun lain AWS Glue Data Catalog 

```
aws athena create-data-catalog \
  --name cross_account_catalog \
  --type GLUE \
  --description "Cross Account Catalog" \
  --parameters catalog-id=<catalogid>
```

Untuk informasi selengkapnya, lihat [Kueri lintas akun AWS Glue Data Catalog menggunakan Amazon](https://aws.amazon.com/blogs/big-data/query-cross-account-aws-glue-data-catalogs-using-amazon-athena/) Athena di AWS Blog *Big* Data.

# Kontrol akses ke katalog data dengan kebijakan IAM
<a name="datacatalogs-iam-policy"></a>

Untuk mengontrol akses ke katalog data, gunakan izin IAM level sumber daya atau kebijakan IAM berbasis identitas. 

Prosedur berikut khusus untuk Athena. 

Untuk informasi khusus IAM, lihat tautan yang tercantum di akhir bagian ini. Untuk informasi tentang kebijakan katalog data contoh JSON, lihat [Contoh kebijakan Katalog Data](datacatalogs-example-policies.md).

**Untuk menggunakan editor visual di konsol IAM untuk membuat kebijakan katalog data**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Pada panel navigasi yang ada di sebelah kiri, pilih **Kebijakan**, lalu pilih **Buat kebijakan**.

1. Pada tab **Editor visual**, pilih **Pilih layanan**. Pilih Athena untuk ditambahkan ke kebijakan.

1. Pilih **Pilih tindakan**, kemudian pilih tindakan untuk ditambahkan ke kebijakan. Editor visual menunjukkan tindakan yang tersedia di Athena. Untuk informasi selengkapnya, lihat [Kunci tindakan, sumber daya, dan kondisi untuk Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) di Referensi *Otorisasi Layanan*.

1. Pilih **tambahkan tindakan**untuk mengetik tindakan tertentu atau gunakan wildcard (\$1) untuk menentukan beberapa tindakan. 

   Secara default, kebijakan yang Anda buat mengizinkan tindakan yang Anda pilih. Jika Anda memilih satu atau lebih tindakan yang mendukung izin level sumber daya ke sumber daya `datacatalog` di Athena, editor akan mencantumkan sumber daya `datacatalog` tersebut. 

1. Pilih **Sumber Daya** untuk menentukan katalog data khusus bagi kebijakan Anda. Misalnya kebijakan katalog data JSON, lihat [Contoh kebijakan Katalog Data](datacatalogs-example-policies.md).

1. Tentukan sumber daya `datacatalog` sebagai berikut:

   ```
   arn:aws:athena:<region>:<user-account>:datacatalog/<datacatalog-name>
   ```

1. Pada halaman **Tinjau kebijakan**, ketik **Nama** dan **Deskripsi** (opsional) untuk kebijakan yang Anda buat. Tinjau ringkasan kebijakan untuk memastikan bahwa Anda memberikan izin yang dimaksud. 

1. Pilih **Buat kebijakan** untuk menyimpan kebijakan baru Anda.

1. Lampirkan kebijakan berbasis identitas ini ke pengguna, grup, atau peran dan tentukan sumber daya `datacatalog` yang dapat mereka akses.

Untuk informasi selengkapnya, lihat topik berikut di *Referensi Otorisasi Layanan* dan *Panduan Pengguna IAM*:
+ [Tindakan, sumber daya, dan kunci kondisi untuk Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html)
+ [Membuat kebijakan dengan editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor)
+ [Menambahkan dan menghapus kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)
+ [Mengontrol akses ke sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#access_controlling-resources)

Misalnya kebijakan katalog data JSON, lihat [Contoh kebijakan Katalog Data](datacatalogs-example-policies.md).

*Untuk informasi tentang AWS Glue izin dan izin AWS Glue crawler, lihat [Menyiapkan izin IAM untuk AWS Glue dan Prasyarat](https://docs.aws.amazon.com/glue/latest/dg/getting-started-access.html) [Crawler](https://docs.aws.amazon.com/glue/latest/dg/crawler-prereqs.html) di Panduan Pengembang.AWS Glue *

Untuk daftar lengkap tindakan Amazon Athena, lihat nama tindakan API di [Referensi API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). 

# Contoh kebijakan Katalog Data
<a name="datacatalogs-example-policies"></a>

Bagian ini mencakup contoh kebijakan yang dapat Anda gunakan untuk mengaktifkan berbagai tindakan pada katalog data.

Katalog data adalah sumber daya IAM yang dikelola oleh Athena. Oleh karena itu, jika kebijakan katalog data Anda menggunakan tindakan yang mengambil `datacatalog` sebagai input, Anda harus menentukan ARN katalog data sebagai berikut:

```
"Resource": [arn:aws:athena:<region>:<user-account>:datacatalog/<datacatalog-name>]
```

`<datacatalog-name>` adalah nama katalog data Anda. Misalnya, untuk katalog data bernama `test_datacatalog`, tentukan sebagai sumber daya sebagai berikut:

```
"Resource": ["arn:aws:athena:us-east-1:123456789012:datacatalog/test_datacatalog"]
```

Untuk daftar lengkap tindakan Amazon Athena, lihat nama tindakan API di [Referensi API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). Untuk informasi selengkapnya tentang kebijakan IAM, lihat [Membuat kebijakan dengan editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) di *Panduan Pengguna IAM*. Untuk informasi selengkapnya tentang cara membuat kebijakan IAM untuk grup kerja, lihat [Kontrol akses ke katalog data dengan kebijakan IAM](datacatalogs-iam-policy.md).
+ [Example Policy for Full Access to All Data Catalogs](#datacatalog-policy-full-access-to-all-data-catalogs)
+ [Example Policy for Full Access to a Specified Data Catalog](#datacatalog-policy-full-access-to-a-specified-catalog)
+ [Example Policy for Querying a Specified Data Catalog](#datacatalog-policy-querying-a-specified-data-catalog)
+ [Example Policy for Management Operations on a Specified Data Catalog](#datacatalog-policy-management-operations-on-a-specified-catalog)
+ [Example Policy for Listing Data Catalogs](#datacatalog-policy-listing-data-catalogs)
+ [Example Policy for Metadata Operations on Data Catalogs](#datacatalog-policy-metadata-operations)

**Example Contoh kebijakan untuk akses penuh ke semua katalog data**  
Kebijakan berikut memungkinkan akses penuh ke semua sumber daya katalog data yang mungkin ada di akun. Kami menyarankan Anda menggunakan kebijakan ini untuk pengguna di akun Anda yang harus mengatur dan mengelola katalog data untuk semua pengguna lain.    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "athena:*"
         ],
         "Resource":[
            "*"
         ]
      }
   ]
}
```

**Example Contoh kebijakan untuk akses penuh ke Katalog Data tertentu**  
Kebijakan berikut memungkinkan akses penuh ke sumber daya katalog data spesifik tunggal, bernama `datacatalogA`. Anda dapat menggunakan kebijakan ini untuk pengguna dengan kontrol penuh atas katalog data tertentu.    
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement":[ { "Effect":"Allow", "Action":[
   "athena:ListDataCatalogs", "athena:ListWorkGroups", "athena:GetDatabase", "athena:ListDatabases",
   "athena:ListTableMetadata", "athena:GetTableMetadata" ], "Resource":"*" }, { "Effect":"Allow",
   "Action":[ "athena:StartQueryExecution", "athena:GetQueryResults", "athena:DeleteNamedQuery",
   "athena:GetNamedQuery", "athena:ListQueryExecutions", "athena:StopQueryExecution",
   "athena:GetQueryResultsStream", "athena:ListNamedQueries", "athena:CreateNamedQuery",
   "athena:GetQueryExecution", "athena:BatchGetNamedQuery", "athena:BatchGetQueryExecution",
   "athena:DeleteWorkGroup", "athena:UpdateWorkGroup", "athena:GetWorkGroup",
   "athena:CreateWorkGroup" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:workgroup/*"
   ] }, { "Effect":"Allow", "Action":[ "athena:CreateDataCatalog", "athena:DeleteDataCatalog",
   "athena:GetDataCatalog", "athena:GetDatabase", "athena:GetTableMetadata", "athena:ListDatabases",
   "athena:ListTableMetadata", "athena:UpdateDataCatalog" ],
      "Resource":"arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
   } ] }
```

**Example Contoh kebijakan untuk menanyakan Katalog Data tertentu**  
Dalam kebijakan berikut, pengguna diizinkan untuk menjalankan kueri pada `datacatalogA` yang ditentukan. Pengguna tidak diizinkan untuk melakukan tugas manajemen untuk katalog data itu sendiri, seperti memperbarui atau menghapusnya.     
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement":[ { "Effect":"Allow", "Action":[
   "athena:StartQueryExecution" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:workgroup/*"
   ] }, { "Effect":"Allow", "Action":[ "athena:GetDataCatalog" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
   ] } ] }
```

**Example Contoh kebijakan untuk operasi manajemen pada Katalog Data tertentu**  
Dalam kebijakan berikut, pengguna diperbolehkan untuk membuat, menghapus, mendapatkan detail, dan memperbarui katalog data `datacatalogA`.     
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Effect": "Allow", "Action": [
    "athena:CreateDataCatalog", "athena:GetDataCatalog", "athena:DeleteDataCatalog",
    "athena:UpdateDataCatalog" ], "Resource": [
        "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
    ] } ] }
```

**Example Contoh kebijakan untuk mencantumkan katalog data**  
Kebijakan berikut memungkinkan semua pengguna untuk mencantumkan semua katalog data:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Contoh kebijakan untuk operasi metadata pada katalog data**  
Kebijakan berikut memungkinkan operasi metadata pada katalog data:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetDatabase",
                "athena:GetTableMetadata",
                "athena:ListDatabases",
                "athena:ListTableMetadata"
            ],
            "Resource": "*"
        }
    ]
}
```

# Gunakan formulir di konsol Athena untuk menambahkan tabel AWS Glue
<a name="data-sources-glue-manual-table"></a>

Prosedur berikut menunjukkan cara menggunakan konsol Athena untuk menambahkan tabel menggunakan formulir data **bucket Create Table From S3**.

**Untuk menambahkan tabel dan memasukkan informasi skema menggunakan formulir**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Di editor kueri, di samping **Tabel dan tampilan**, pilih **Buat**, lalu pilih **data bucket S3**.

1. Pada formulir **data bucket Create Table From S3**, untuk **nama Table**, masukkan nama untuk tabel. Untuk informasi tentang karakter yang dapat diterima untuk nama database, nama tabel, dan nama kolom di Athena, lihat. [Nama database, tabel, dan kolom](tables-databases-columns-names.md)

1. Untuk **konfigurasi Database**, pilih database yang ada, atau buat yang baru.

1. Untuk**Lokasi Set Input Data**, tentukan jalur di Amazon S3 ke folder yang berisi kumpulan data yang ingin Anda proses. Jangan sertakan nama file di jalur. Athena memindai semua file di folder yang Anda tentukan. Jika data Anda sudah dipartisi (misalnya, 

    s3://amzn-s3-demo -bucket/logs/year=2004/month=12/day=11/), enter the base path only (for example, s3://amzn-s3-demo-bucket/logs/).

1. Untuk **Format Data**, pilih di antara opsi berikut:
   + **Untuk **tipe Table**, pilih **Apache Hive**, **Apache Iceberg**, atau Delta Lake.** Athena menggunakan jenis tabel Apache Hive sebagai default. Untuk informasi tentang menanyakan tabel Apache Iceberg di Athena, lihat. [Tabel Query Apache Iceberg](querying-iceberg.md) Untuk informasi tentang menggunakan tabel Danau Delta di Athena, lihat. [Tabel Query Linux Foundation Delta Lake](delta-lake-tables.md)
   + Untuk **format File**, pilih format file atau log tempat data Anda berada.
     + Untuk**Berkas Teks dengan Pembatas Kustom**pilihan, tentukan**Bidang terminator**(yaitu pembatas kolom). Secara opsional, Anda dapat menentukan **terminator Collection** yang menandai akhir dari tipe array atau **terminator Collection** yang menandai akhir dari tipe data peta.
   + **SerDe library — Pustaka** SerDe (serializer-deserializer) mem-parsing format data tertentu sehingga Athena dapat membuat tabel untuk itu. Untuk sebagian besar format, SerDe pustaka default dipilih untuk Anda. Untuk format berikut, pilih perpustakaan sesuai dengan kebutuhan Anda:
     + **Apache Web Logs** - Pilih salah satu **RegexSerDe**atau **GrokSerDe**perpustakaan. Untuk RegexSerDe, berikan ekspresi reguler di kotak **definisi Regex**. Untuk GrokSerDe, berikan serangkaian ekspresi reguler bernama untuk `input.format` SerDe properti. Ekspresi reguler bernama lebih mudah dibaca dan dipelihara daripada ekspresi reguler. Untuk informasi selengkapnya, lihat [Kueri log Apache disimpan di Amazon S3](querying-apache-logs.md).
     + **CSV** — Pilih **LazySimpleSerDe**apakah data Anda yang dipisahkan koma tidak berisi nilai yang diapit tanda kutip ganda atau jika menggunakan format. `java.sql.Timestamp` Pilih **Buka CSVSer De** jika data Anda menyertakan tanda kutip atau menggunakan format numerik UNIX untuk `TIMESTAMP` (misalnya,`1564610311`). Untuk informasi selengkapnya, lihat [Lazy Simple SerDe untuk CSV, TSV, dan file yang dibatasi khusus](lazy-simple-serde.md) dan [Buka CSV SerDe untuk memproses CSV](csv-serde.md).
     + **JSON** — Pilih perpustakaan **OpenX** **atau** SerDe Hive JSON. Kedua format mengharapkan setiap dokumen JSON berada pada satu baris teks dan bidang itu tidak dipisahkan oleh karakter baris baru. OpenX SerDe menawarkan beberapa properti tambahan. Untuk informasi selengkapnya tentang properti ini, lihat [OpenX JSON SerDe](openx-json-serde.md). Untuk informasi tentang Hive SerDe, lihat[Sarang JSON SerDe](hive-json-serde.md).

     Untuk informasi lebih lanjut tentang penggunaan SerDe perpustakaan di Athena, lihat. [Pilih SerDe untuk data Anda](supported-serdes.md)

1. Untuk **SerDe properti**, tambahkan, edit, atau hapus properti dan nilai sesuai dengan SerDe pustaka yang Anda gunakan dan kebutuhan Anda.
   + Untuk menambahkan SerDe properti, pilih **Tambah SerDe properti**.
   + Di bidang **Nama**, masukkan nama properti. 
   + Di bidang **Nilai**, masukkan nilai untuk properti. 
   + Untuk menghapus SerDe properti, pilih **Hapus**.

1. Untuk **properti Tabel**, pilih atau edit properti tabel sesuai dengan kebutuhan Anda.
   + Untuk **kompresi Tulis**, pilih opsi kompresi. Ketersediaan opsi kompresi tulis dan opsi kompresi yang tersedia tergantung pada format data. Untuk informasi selengkapnya, lihat [Gunakan kompresi di Athena](compression-formats.md).
   + Untuk **Enkripsi**, pilih **Kumpulan data terenkripsi jika data** yang mendasarinya dienkripsi di Amazon S3. Opsi ini menetapkan properti `has_encrypted_data` tabel ke true dalam `CREATE TABLE` pernyataan.

1. Untuk **detail Kolom**, masukkan nama dan tipe data kolom yang ingin Anda tambahkan ke tabel.
   + Untuk menambahkan lebih banyak kolom satu per satu, pilih**Tambahkan kolom**.
   + Untuk menambahkan lebih banyak kolom dengan cepat, pilih**Tambahkan kolom**. Di kotak teks, masukkan daftar kolom yang dipisahkan koma dalam format *column\$1name**data\$1type*, *column\$1name* *data\$1type* [,...], lalu pilih **Tambah**.

1. (Opsional) Untuk **detail Partisi**, tambahkan satu atau beberapa nama kolom dan tipe data. Partisi menyimpan data terkait bersama-sama berdasarkan nilai kolom dan dapat membantu mengurangi jumlah data yang dipindai per kueri. Untuk informasi tentang partisi, lihat [Partisi data Anda](partitions.md).

1. (Opsional) Untuk **Bucketing**, Anda dapat menentukan satu atau beberapa kolom yang memiliki baris yang ingin Anda kelompokkan bersama, lalu menempatkan baris tersebut ke dalam beberapa ember. Hal ini memungkinkan Anda untuk menanyakan hanya bucket yang ingin Anda baca saat nilai kolom berember ditentukan.
   + Untuk **Bucket**, pilih satu atau beberapa kolom yang memiliki sejumlah besar nilai unik (misalnya, kunci utama) dan yang sering digunakan untuk memfilter data dalam kueri Anda.
   + Untuk **Jumlah ember**, masukkan nomor yang memungkinkan file berukuran optimal. Untuk informasi selengkapnya, lihat [10 Tips Penyetelan Kinerja Terbaik untuk Amazon](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) Athena di Blog Big AWS Data.
   + Untuk menentukan kolom bucketed Anda, `CREATE TABLE` pernyataan akan menggunakan sintaks berikut:

     ```
     CLUSTERED BY (bucketed_columns) INTO number_of_buckets BUCKETS
     ```
**catatan**  
Opsi **Bucketing** tidak tersedia untuk jenis tabel **Iceberg**.

1. Kotak **kueri tabel pratinjau** menunjukkan `CREATE TABLE` pernyataan yang dihasilkan oleh informasi yang Anda masukkan ke dalam formulir. Pernyataan pratinjau tidak dapat diedit secara langsung. Untuk mengubah pernyataan, ubah bidang formulir di atas pratinjau, atau [buat pernyataan langsung](creating-tables-how-to.md#to-create-a-table-using-hive-ddl) di editor kueri alih-alih menggunakan formulir. 

1. Pilih **Buat tabel** untuk menjalankan pernyataan yang dihasilkan di editor kueri dan buat tabel.

# Gunakan crawler untuk menambahkan tabel
<a name="schema-crawlers"></a>

AWS Glue crawler membantu menemukan skema untuk kumpulan data dan mendaftarkannya sebagai tabel di Katalog Data. AWS Glue Crawler menelusuri data Anda dan menentukan skema. Selain itu, crawler dapat mendeteksi dan mendaftarkan partisi. Untuk informasi selengkapnya, lihat [Mendefinisikan crawler](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) di Panduan *AWS Glue Pengembang*. Tabel dari data yang berhasil dirayapi dapat ditanyakan dari Athena.

**catatan**  
Athena tidak mengenali [pola pengecualian](https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude) yang Anda tentukan untuk crawler. AWS Glue Misalnya, jika Anda memiliki bucket Amazon S3 yang berisi keduanya`.csv`dan`.json`file dan Anda mengecualikan`.json`file dari crawler, Athena mengkueri kedua grup file. Untuk menghindari hal ini, menempatkan file yang ingin Anda mengecualikan di lokasi yang berbeda. 

## Buat AWS Glue crawler
<a name="data-sources-glue-crawler-setup"></a>

Anda dapat membuat crawler dengan memulai di konsol Athena dan kemudian menggunakan konsol AWS Glue secara terintegrasi. Saat membuat crawler, Anda menentukan lokasi data di Amazon S3 untuk dirayapi.

**Untuk membuat crawler di AWS Glue mulai dari konsol Athena**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Di editor kueri, di samping **Tabel dan tampilan**, pilih **Buat**, lalu pilih **AWS Glue crawler**. 

1. Pada**AWS Glue**Konsol**Tambahkan crawler**, ikuti langkah-langkah untuk membuat crawler. Untuk informasi selengkapnya, lihat [Menggunakan AWS Glue Crawler](#schema-crawlers) dalam panduan ini dan [Mengisi AWS Glue Data Catalog di](https://docs.aws.amazon.com/glue/latest/dg/populate-catalog-methods.html) Panduan *AWS Glue Pengembang*.

**catatan**  
Athena tidak mengenali [pola pengecualian](https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude) yang Anda tentukan untuk crawler. AWS Glue Misalnya, jika Anda memiliki bucket Amazon S3 yang berisi keduanya`.csv`dan`.json`file dan Anda mengecualikan`.json`file dari crawler, Athena mengkueri kedua grup file. Untuk menghindari hal ini, menempatkan file yang ingin Anda mengecualikan di lokasi yang berbeda.

Setelah crawl, AWS Glue crawler secara otomatis menetapkan metadata tabel tertentu untuk membantu membuatnya kompatibel dengan teknologi eksternal lainnya seperti Apache Hive, Presto, dan Spark. Kadang-kadang, crawler mungkin salah menetapkan properti metadata. Perbaiki properti secara manual AWS Glue sebelum menanyakan tabel menggunakan Athena. Untuk informasi selengkapnya, lihat [Melihat dan mengedit detail tabel](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html#console-tables-details) di *Panduan AWS Glue Pengembang*.

AWS Glue mungkin salah menetapkan metadata ketika file CSV memiliki tanda kutip di sekitar setiap bidang data, membuat properti salah. `serializationLib` Untuk informasi selengkapnya, lihat [Menangani data CSV terlampir dalam tanda kutip](schema-csv.md#schema-csv-quotes).

# Menggunakan beberapa sumber data dengan crawler
<a name="schema-crawlers-data-sources"></a>

Ketika AWS Glue crawler memindai Amazon S3 dan mendeteksi beberapa direktori, ia menggunakan heuristik untuk menentukan di mana root untuk tabel berada dalam struktur direktori, dan direktori mana yang merupakan partisi untuk tabel. Dalam beberapa kasus, tempat skema yang terdeteksi dalam dua atau lebih direktori serupa, crawler dapat memperlakukannya sebagai partisi dan bukan tabel terpisah. Salah satu cara untuk membantu crawler menemukan tabel individu adalah dengan menambahkan direktori root setiap tabel sebagai penyimpanan data untuk crawler.

Partisi berikut di Amazon S3 adalah contoh:

```
s3://amzn-s3-demo-bucket/folder1/table1/partition1/file.txt
s3://amzn-s3-demo-bucket/folder1/table1/partition2/file.txt
s3://amzn-s3-demo-bucket/folder1/table1/partition3/file.txt
s3://amzn-s3-demo-bucket/folder1/table2/partition4/file.txt
s3://amzn-s3-demo-bucket/folder1/table2/partition5/file.txt
```

Jika skema untuk `table1` dan serupa, dan `table2` satu sumber data diatur ke `s3://amzn-s3-demo-bucket/folder1/` dalam AWS Glue, crawler dapat membuat tabel tunggal dengan dua kolom partisi: satu kolom partisi yang berisi `table1` dan`table2`, dan kolom partisi kedua yang berisi `partition1` melalui. `partition5`

Agar AWS Glue crawler membuat dua tabel terpisah, atur crawler untuk memiliki dua sumber data, `s3://amzn-s3-demo-bucket/folder1/table1/` dan`s3://amzn-s3-demo-bucket/folder1/table2`, seperti yang ditunjukkan dalam prosedur berikut.

**Untuk menambahkan penyimpanan data S3 ke crawler yang ada di AWS Glue**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, pilih **Perayap**.

1. Pilih tautan ke crawler Anda, lalu pilih **Edit**. 

1. Untuk **Langkah 2: Pilih sumber data dan pengklasifikasi**, pilih **Edit**. 

1. Untuk **sumber data dan katalog**, pilih **Tambahkan sumber data**.

1. Dalam kotak dialog **Tambahkan sumber data**, untuk **jalur S3**, pilih **Jelajahi**. 

1. Pilih bucket yang ingin Anda gunakan, lalu pilih **Pilih**.

   Sumber data yang Anda tambahkan muncul di daftar **Sumber data**.

1. Pilih **Berikutnya**.

1. **Pada halaman **Konfigurasi pengaturan keamanan**, buat atau pilih peran IAM untuk crawler, lalu pilih Berikutnya.**

1. Pastikan bahwa jalur S3 berakhir dengan garis miring, lalu pilih **Tambahkan sumber data S3**.

1. Pada halaman **Set output dan penjadwalan**, untuk **konfigurasi Output**, pilih database target.

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan perbarui**, tinjau pilihan yang Anda buat. Untuk mengedit langkah, pilih **Edit**.

1.  Pilih **Perbarui**.

# Jadwalkan crawler agar tetap sinkron AWS Glue Data Catalog dan Amazon S3
<a name="schema-crawlers-schedule"></a>

AWS Glue crawler dapat diatur untuk berjalan sesuai jadwal atau sesuai permintaan. *Untuk informasi selengkapnya, lihat [Jadwal berbasis waktu untuk pekerjaan dan crawler di Panduan Pengembang](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html).AWS Glue *

Jika Anda memiliki data yang tiba untuk tabel yang dipartisi pada waktu yang tetap, Anda dapat mengatur AWS Glue crawler agar berjalan sesuai jadwal untuk mendeteksi dan memperbarui partisi tabel. Ini dapat menghilangkan kebutuhan untuk menjalankan berpotensi panjang dan mahal`MSCK REPAIR`perintah atau secara manual menjalankan`ALTER TABLE ADD PARTITION`Perintah. Untuk informasi selengkapnya, lihat [Partisi tabel](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html#tables-partition) di *Panduan AWS Glue Pengembang*.

# Optimalkan kueri dengan pengindeksan dan AWS Glue pemfilteran partisi
<a name="glue-best-practices-partition-index"></a>

Ketika Athena menanyakan tabel yang dipartisi, Athena mengambil dan memfilter partisi tabel yang tersedia ke subset yang relevan dengan kueri Anda. Saat data dan partisi baru ditambahkan, lebih banyak waktu diperlukan untuk memproses partisi, dan runtime kueri dapat meningkat. Jika Anda memiliki tabel dengan sejumlah besar partisi yang tumbuh seiring waktu, pertimbangkan untuk menggunakan pengindeksan dan penyaringan AWS Glue partisi. Pengindeksan partisi memungkinkan Athena untuk mengoptimalkan pemrosesan partisi dan meningkatkan kinerja kueri pada tabel yang sangat dipartisi. Menyiapkan pemfilteran partisi dalam properti tabel adalah proses dua langkah:

1. Membuat indeks partisi di AWS Glue.

1. Mengaktifkan pemfilteran partisi untuk tabel.

## Membuat indeks partisi
<a name="glue-best-practices-partition-index-creating"></a>

Untuk langkah-langkah membuat indeks partisi AWS Glue, lihat [Bekerja dengan indeks partisi](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html) di Panduan AWS Glue Pengembang. Untuk batasan indeks partisi di AWS Glue, lihat bagian [Tentang indeks partisi](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html#partition-index-1) di halaman itu.

## Mengaktifkan pemfilteran partisi
<a name="glue-best-practices-partition-filtering-enabling"></a>

Untuk mengaktifkan pemfilteran partisi untuk tabel, Anda harus mengatur properti tabel baru di AWS Glue. Untuk langkah-langkah tentang cara mengatur properti tabel AWS Glue, lihat halaman [Menyiapkan proyeksi partisi](https://docs.aws.amazon.com/athena/latest/ug/partition-projection-setting-up.html). Saat Anda mengedit detail tabel AWS Glue, tambahkan pasangan kunci-nilai berikut ke bagian **Properti tabel**:
+ Untuk **Key**, tambahkan `partition_filtering.enabled`
+ Untuk **Nilai**, tambahkan `true`

Anda dapat menonaktifkan pemfilteran partisi pada tabel ini kapan saja dengan menyetel `partition_filtering.enabled` nilainya. `false`

Setelah Anda menyelesaikan langkah-langkah di atas, Anda dapat kembali ke konsol Athena untuk menanyakan data.

*Untuk informasi selengkapnya tentang penggunaan pengindeksan dan pemfilteran partisi, lihat [Meningkatkan kinerja kueri Amazon Athena AWS Glue Data Catalog menggunakan indeks partisi](https://aws.amazon.com/blogs/big-data/improve-amazon-athena-query-performance-using-aws-glue-data-catalog-partition-indexes/) di AWS Blog Big Data.*

# Gunakan AWS CLI untuk membuat ulang AWS Glue database dan tabelnya
<a name="glue-recreate-db-and-tables-cli"></a>

Mengganti nama AWS Glue database secara langsung tidak dimungkinkan, tetapi Anda dapat menyalin definisinya, memodifikasi definisi, dan menggunakan definisi untuk membuat ulang database dengan nama yang berbeda. Demikian pula, Anda dapat menyalin definisi tabel di database lama, memodifikasi definisi, dan menggunakan definisi yang dimodifikasi untuk membuat ulang tabel di database baru.

**catatan**  
 Metode yang disajikan tidak menyalin partisi tabel. 

Prosedur berikut untuk Windows mengasumsikan bahwa Anda AWS CLI dikonfigurasi untuk output JSON. Untuk mengubah format output default di AWS CLI, jalankan`aws configure`.

**Untuk menyalin AWS Glue Database menggunakan AWS CLI**

1. Pada prompt perintah, jalankan AWS CLI perintah berikut untuk mengambil definisi AWS Glue database yang ingin Anda salin.

   ```
   aws glue get-database --name database_name
   ```

   Untuk informasi selengkapnya tentang `get-database` perintah, lihat [get-database](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-database.html).

1. Simpan output JSON ke file dengan nama database baru (misalnya,`new_database_name.json`) ke desktop Anda.

1. Buka file `new_database_name.json` di editor teks.

1. Dalam file JSON, lakukan langkah-langkah berikut:

   1. Hapus `{ "Database":` entri luar dan penjepit penutup yang sesuai `}` di akhir file.

   1. Ubah `Name` entri ke nama database baru.

   1. Hapus `CatalogId` bidang.

1. Simpan file tersebut.

1. Pada prompt perintah, jalankan AWS CLI perintah berikut untuk menggunakan file definisi database yang dimodifikasi untuk membuat database dengan nama baru.

   ```
   aws glue create-database --database-input "file://~/Desktop\new_database_name.json"
   ```

   Untuk informasi selengkapnya tentang `create-database` perintah, lihat [create-database](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-database.html). Untuk informasi tentang memuat AWS CLI parameter dari file, lihat [Memuat AWS CLI parameter dari file](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html) di *Panduan AWS Command Line Interface Pengguna*.

1. Untuk memverifikasi bahwa database baru telah dibuat AWS Glue, jalankan perintah berikut:

   ```
   aws glue get-database --name new_database_name
   ```

Sekarang Anda siap untuk mendapatkan definisi untuk tabel yang ingin Anda salin ke database baru, memodifikasi definisi, dan menggunakan definisi yang dimodifikasi untuk membuat ulang tabel dalam database baru. Prosedur ini tidak mengubah nama tabel.

**Untuk menyalin AWS Glue tabel menggunakan AWS CLI**

1. Pada prompt perintah, jalankan AWS CLI perintah berikut.

   ```
   aws glue get-table --database-name database_name --name table_name
   ```

   Untuk informasi selengkapnya tentang `get-table` perintah, lihat [get-table](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-table.html).

1. Simpan output JSON ke file dengan nama tabel (misalnya, *table\$1name* .json) ke desktop Windows Anda.

1. Buka file di editor teks.

1. Dalam file JSON, hapus `{"Table": ` entri luar dan penjepit penutup yang sesuai `}` di akhir file.

1. Dalam file JSON, hapus entri berikut dan nilainya:
   + `DatabaseName`— Entri ini tidak diperlukan karena perintah `create-table` CLI menggunakan parameter. `--database-name`
   + `CreateTime`
   + `UpdateTime`
   + `CreatedBy`
   + `IsRegisteredWithLakeFormation`
   + `CatalogId`
   + `VersionId`

1. Simpan file definisi tabel.

1. Pada prompt perintah, jalankan AWS CLI perintah berikut untuk membuat ulang tabel di database baru:

   ```
   aws glue create-table --database-name new_database_name --table-input "file://~/Desktop\table_name.json"     
   ```

   Untuk informasi selengkapnya tentang `create-table` perintah, lihat [create-table](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-table.html).

   Tabel sekarang muncul di database baru di AWS Glue dan dapat ditanyakan dari Athena.

1. Ulangi langkah-langkah untuk menyalin setiap tabel tambahan ke database baru di AWS Glue.

# Buat tabel untuk pekerjaan ETL
<a name="schema-classifier"></a>

Anda dapat menggunakan Athena untuk membuat tabel yang AWS Glue dapat digunakan untuk pekerjaan ETL. AWS Glue pekerjaan melakukan operasi ETL. AWS Glue Pekerjaan menjalankan skrip yang mengekstrak data dari sumber, mengubah data, dan memuatnya menjadi target. Untuk informasi selengkapnya, lihat [Menulis Pekerjaan di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) di *Panduan AWS Glue Pengembang*.

## Membuat tabel Athena untuk AWS Glue pekerjaan ETL
<a name="schema-etl-tables"></a>

Tabel yang Anda buat di Athena harus memiliki properti tabel ditambahkan ke mereka yang disebut `classification`, yang mengidentifikasi format data. Ini memungkinkan AWS Glue untuk menggunakan tabel untuk tugas ETL. Nilai klasifikasi dapat berupa`avro`,`csv`,`json`,`orc`,`parquet`, atau`xml`. Contoh pernyataan `CREATE TABLE` di Athena berikut:

```
CREATE EXTERNAL TABLE sampleTable (
  column1 INT,
  column2 INT
  ) STORED AS PARQUET
  TBLPROPERTIES (
  'classification'='parquet')
```

Jika properti `classification` tabel tidak ditambahkan saat tabel dibuat, Anda dapat menambahkannya menggunakan AWS Glue konsol.

**Untuk menambahkan properti tabel klasifikasi menggunakan AWS Glue konsol**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi konsol, pilih **Tabel**.

1. Pilih tautan untuk tabel yang ingin Anda edit, lalu pilih **Tindakan**, **Edit tabel**.

1. Gulir ke bawah ke bagian **Properti tabel**.

1. Pilih **Tambahkan**.

1. Untuk **Kunci**, masukkan **classification**.

1. Untuk **Nilai**, masukkan tipe data (misalnya,**json**).

1. Pilih **Simpan**.

   Di bagian **Rincian tabel**, tipe data yang Anda masukkan muncul di bidang **Klasifikasi** untuk tabel.

Untuk informasi selengkapnya, lihat [Bekerja dengan tabel](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html) di *Panduan AWS Glue Pengembang*.

## Gunakan pekerjaan ETL untuk mengoptimalkan kinerja kueri
<a name="schema-etl-performance"></a>

AWS Glue jobs dapat membantu Anda mengubah data ke format yang mengoptimalkan kinerja kueri di Athena. Format data memiliki dampak besar pada performa kueri dan biaya permintaan di Athena.

AWS Glue mendukung penulisan ke format data Parket dan ORC. Anda dapat menggunakan fitur ini untuk mengubah data Anda untuk digunakan di Athena. Untuk informasi selengkapnya tentang penggunaan Parket dan ORC, dan cara lain untuk meningkatkan kinerja di Athena, lihat [10 kiat penyetelan kinerja terbaik untuk](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) Amazon Athena.

**catatan**  
Untuk mengurangi kemungkinan Athena tidak dapat membaca `SMALLINT` dan tipe `TINYINT` data yang dihasilkan oleh pekerjaan AWS Glue ETL, konversikan `SMALLINT` dan `TINYINT` ke `INT` saat Anda membuat pekerjaan ETL yang mengubah data menjadi ORC.

## Otomatiskan AWS Glue pekerjaan untuk ETL
<a name="schema-etl-automate"></a>

Anda dapat mengonfigurasi pekerjaan AWS Glue ETL agar berjalan secara otomatis berdasarkan pemicu. Fitur ini ideal ketika data dari luar AWS didorong ke bucket Amazon S3 dalam format yang kurang optimal untuk kueri di Athena. Untuk informasi selengkapnya, lihat [Memicu AWS Glue lowongan](https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html) di *Panduan AWS Glue Pengembang*.

# Bekerja dengan data CSV di AWS Glue
<a name="schema-csv"></a>

Halaman ini menjelaskan AWS Glue cara menggunakan skema dari file CSV yang memiliki tanda kutip di sekitar nilai data untuk setiap kolom atau dari file CSV yang menyertakan nilai header.

## Menangani data CSV terlampir dalam tanda kutip
<a name="schema-csv-quotes"></a>

Misalkan file CSV memiliki bidang data yang diapit tanda kutip ganda, seperti pada contoh berikut.

```
"John","Doe","123-555-1231","John said \"hello\""
"Jane","Doe","123-555-9876","Jane said \"hello\""
```

Untuk menjalankan kueri di Athena pada tabel yang dibuat dari file CSV yang memiliki nilai kutipan, Anda harus memodifikasi properti tabel AWS Glue untuk menggunakan Open De. CSVSer Untuk informasi selengkapnya tentang SerDe OpenCSV, lihat. [Buka CSV SerDe untuk memproses CSV](csv-serde.md)

**Untuk mengedit properti tabel di AWS Glue konsol**

1. Di panel navigasi AWS Glue konsol, pilih **Tabel**.

1. Pilih tautan untuk tabel yang ingin Anda edit, lalu pilih **Tindakan**, **Edit tabel**.

1. Pada halaman **Edit tabel**, buat perubahan berikut:
   + Untuk **Serialisasi lib, masukkan**. `org.apache.hadoop.hive.serde2.OpenCSVSerde`
   + Untuk**Parameter serde**, masukkan nilai berikut untuk kunci`escapeChar`,`quoteChar`, dan`separatorChar`: 
     + Untuk`escapeChar`, masukkan garis miring terbalik (**\$1**).
     + Untuk`quoteChar`, masukkan kutipan ganda (**"**).
     + Untuk`separatorChar`, masukkan koma (**,**).

1. Pilih **Simpan**.

Untuk informasi selengkapnya, lihat [Melihat dan mengedit detail tabel](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html#console-tables-details) di *Panduan AWS Glue Pengembang*.

Anda juga dapat memperbarui properti AWS Glue tabel secara terprogram. Gunakan operasi AWS Glue [UpdateTable](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateTable.html)API atau AWS CLI perintah [update-table](https://docs.aws.amazon.com/cli/latest/reference/glue/update-table.html) untuk memodifikasi `SerDeInfo` blok dalam definisi tabel, seperti pada contoh JSON berikut.

```
"SerDeInfo": {
   "name": "",
   "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
   "parameters": {
      "separatorChar": ","
      "quoteChar": "\""
      "escapeChar": "\\"
      }
},
```

## Menangani file CSV dengan header
<a name="schema-csv-headers"></a>

Jika Anda menentukan tabel di Athena dengan`CREATE TABLE`pernyataan, Anda dapat menggunakan`skip.header.line.count`untuk mengabaikan header dalam data CSV Anda, seperti dalam contoh berikut.

```
...
STORED AS TEXTFILE
LOCATION 's3://amzn-s3-demo-bucket/csvdata_folder/';
TBLPROPERTIES ("skip.header.line.count"="1")
```

Atau, Anda dapat menghapus header CSV terlebih dahulu sehingga informasi header tidak termasuk dalam hasil permintaan Athena. Salah satu cara untuk mencapainya adalah dengan menggunakan tugas AWS Glue , yang melakukan pekerjaan extract, transform, and load (ETL). Anda dapat menulis skrip dalam AWS Glue menggunakan bahasa yang merupakan perpanjangan dari dialek PySpark Python. Untuk informasi selengkapnya, lihat [Menulis Pekerjaan di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) di *Panduan AWS Glue Pengembang*.

Contoh berikut menunjukkan fungsi dalam AWS Glue skrip yang menulis frame dinamis menggunakan`from_options`, dan menetapkan opsi `writeHeader` format ke false, yang menghapus informasi header:

```
glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": "s3://amzn-s3-demo-bucket/MYTABLEDATA/"}, format = "csv", format_options = {"writeHeader": False}, transformation_ctx = "datasink2")
```

# Bekerja dengan data geospasial di AWS Glue
<a name="schema-geospatial"></a>

AWS Glue tidak secara native mendukung Teks Terkenal (WKT), Biner Terkenal (WKB), atau tipe data PostGIS lainnya. AWS Glue Pengklasifikasi mem-parsing data geospasial dan mengklasifikasikannya menggunakan tipe data yang didukung untuk format, seperti untuk CSV. `varchar` Seperti AWS Glue tabel lainnya, Anda mungkin perlu memperbarui properti tabel yang dibuat dari data geospasial untuk memungkinkan Athena mengurai tipe data ini apa adanya. Untuk informasi selengkapnya, lihat [Gunakan crawler untuk menambahkan tabel](schema-crawlers.md) dan [Bekerja dengan data CSV di AWS Glue](schema-csv.md). Athena mungkin tidak dapat mengurai beberapa tipe data geospasial dalam tabel apa adanya. AWS Glue Untuk informasi selengkapnya tentang bekerja dengan data geospasial di Athena, lihat[Kueri data geospasial](querying-geospatial-data.md).

# Gunakan Kueri Federasi Amazon Athena
<a name="federated-queries"></a>

Jika Anda memiliki data dalam sumber selain Amazon S3, Anda dapat menggunakan Kueri Gabungan Athena untuk mengkueri data di tempat atau membangun alur yang mengekstraksi data dari beberapa sumber data dan menyimpannya di Amazon S3. Dengan Kueri Gabungan Athena, Anda dapat menjalankan kueri SQL di seluruh data yang disimpan dalam sumber data relasional, non-relasional, objek, dan kustom.

Athena menggunakan *konektor sumber data* yang berjalan AWS Lambda untuk menjalankan kueri federasi. Konektor sumber data adalah bagian dari kode yang dapat menerjemahkan antara sumber data target Anda dan Athena. Anda bisa memikirkan konektor sebagai perpanjangan mesin permintaan Athena. Konektor sumber data Athena bawaan ada untuk sumber data seperti Amazon Logs, Amazon DynamoDB, CloudWatch Amazon DocumentDB, dan Amazon RDS, dan sumber data relasional yang sesuai dengan JDBC seperti MySQL, dan PostgreSQL di bawah lisensi Apache 2.0. Anda juga dapat menggunakan Athena Kueri Federation SDK untuk menulis konektor kustom. Untuk memilih, mengonfigurasi, dan menggunakan konektor sumber data ke akun Anda, Anda dapat menggunakan konsol Athena dan Lambda atau AWS Serverless Application Repository. Setelah Anda men-deploy konektor sumber data, konektor dikaitkan dengan katalog yang dapat Anda tentukan dalam SQL kueri. Anda dapat menggabungkan pernyataan SQL dari beberapa katalog dan rentang beberapa sumber data dengan satu kueri.

Saat kueri diajukan terhadap sumber data, Athena memanggil konektor yang sesuai untuk mengidentifikasi bagian-bagian tabel yang perlu dibaca, mengelola paralelisme, dan menekan predikat filter. Berdasarkan pengguna mengirimkan kueri, konektor dapat menyediakan atau membatasi akses ke elemen data tertentu. Konektor menggunakan Apache Arrow sebagai format untuk mengembalikan data yang diminta dalam kueri, yang memungkinkan konektor untuk diimplementasikan dalam bahasa seperti C, C \$1\$1, Java, Python, dan Rust. Karena konektor diproses di Lambda, konektor dapat digunakan untuk mengakses data dari sumber data apa pun di cloud atau lokal yang dapat diakses dari Lambda.

Untuk menulis konektor sumber data Anda sendiri, Anda dapat menggunakan Athena Kueri Federation SDK untuk menyesuaikan salah satu konektor prebuilt yang disediakan dan dipelihara Amazon Athena. Anda dapat memodifikasi salinan kode sumber dari [GitHub repositori](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors) dan kemudian menggunakan [alat publikasi Connector](https://github.com/awslabs/aws-athena-query-federation/wiki/Connector_Publish_Tool) untuk membuat paket Anda sendiri AWS Serverless Application Repository . 

**catatan**  
Developer pihak ketiga mungkin telah menggunakan Athena Kueri Federation SDK untuk menulis konektor sumber data. Untuk masalah dukungan atau lisensi dengan konektor sumber data ini, silakan bekerja dengan penyedia konektor Anda. Konektor ini tidak diuji atau didukung oleh AWS. 

Untuk daftar konektor sumber data yang ditulis dan diuji oleh Athena, lihat [Konektor sumber data yang tersedia](connectors-available.md).

Untuk informasi tentang menulis konektor sumber data Anda sendiri, lihat [Contoh konektor Athena aktif](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-example). GitHub

## Pertimbangan dan batasan
<a name="connect-to-a-data-source-considerations"></a>
+ **Versi mesin** - Athena Federated Query hanya didukung pada mesin Athena versi 2 dan yang lebih baru. Untuk informasi selengkapnya tentang versi mesin Aurora, lihat [Pembuatan versi mesin Athena](engine-versions.md).
+ **Tampilan** — Anda dapat membuat dan menanyakan tampilan pada sumber data gabungan. Tampilan federasi disimpan di AWS Glue, bukan sumber data yang mendasarinya. Untuk informasi selengkapnya, lihat [Kueri tampilan federasi](running-federated-queries.md#running-federated-queries-federated-views).
+ **Pengidentifikasi yang dibatasi — Pengidentifikasi** yang dibatasi (juga dikenal sebagai pengidentifikasi yang dikutip) dimulai dan diakhiri dengan tanda kutip ganda (“). Saat ini, pengidentifikasi yang dibatasi tidak didukung untuk kueri federasi di Athena.
+ **Operasi tulis** - Operasi tulis seperti [INSERT INTO](insert-into.md) tidak didukung. Mencoba melakukannya dapat mengakibatkan pesan kesalahan Operasi ini saat ini tidak didukung untuk katalog eksternal.
+  **Harga** - Untuk informasi harga, lihat [Harga Amazon Athena](https://aws.amazon.com/athena/pricing/).
+ **Driver JDBC** - Untuk menggunakan driver JDBC dengan kueri gabungan atau [metastore Hive eksternal](connect-to-data-source-hive.md), termasuk`MetadataRetrievalMethod=ProxyAPI` dalam string koneksi JDBC Anda. Untuk informasi tentang driver JDBC, lihat [Connect ke Amazon Athena dengan JDBC](connect-with-jdbc.md). 
+ **Secrets Manager** - Untuk menggunakan fitur Kueri Gabungan Athena dengan AWS Secrets Manager, Anda harus mengonfigurasi Vpc endpoint privat untuk Secrets Manager. *Untuk informasi selengkapnya, lihat [Membuat titik akhir pribadi VPC Secrets Manager di Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint-create) Pengguna.AWS Secrets Manager *

## Izin diperlukan
<a name="connect-to-a-data-source-permissions"></a>

Konektor sumber data mungkin memerlukan akses ke sumber daya berikut agar berfungsi dengan benar. Jika Anda menggunakan konektor prebuilt, periksa informasi untuk konektor untuk memastikan bahwa Anda telah mengonfigurasi VPC Anda dengan benar. Juga, memastikan bahwa IAM utama menjalankan kueri dan menciptakan konektor memiliki hak untuk tindakan yang diperlukan. Untuk informasi selengkapnya, lihat [Izinkan akses ke Kueri Federasi Athena: Contoh kebijakan](federated-query-iam-access.md).
+ **Amazon S3**— Selain menulis hasil kueri ke lokasi hasil kueri Athena di Amazon S3, konektor data juga menulis ke bucket tumpahan di Amazon S3. Konektivitas dan izin ke lokasi Amazon S3 ini diperlukan. Sebaiknya gunakan enkripsi tumpahan ke disk untuk setiap konektor dan [konfigurasi siklus hidup S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) untuk menghapus data tumpah yang tidak lagi diperlukan.
+ **Athena**— Sumber data memerlukan konektivitas ke Athena dan sebaliknya untuk memeriksa status kueri dan mencegah overscan.
+ **AWS Glue Data Catalog**— Konektivitas dan izin diperlukan jika konektor Anda menggunakan Katalog Data untuk metadata tambahan atau primer.
+ **Amazon ECR** - Konektor sumber data Fungsi Lambda menggunakan gambar Amazon ECR dari repositori Amazon ECR. Pengguna yang menyebarkan konektor harus memiliki izin `ecr:BatchGetImage` dan. `ecr:GetDownloadUrlForLayer` Untuk informasi selengkapnya, lihat [izin Amazon ECR](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#gettingstarted-images-permissions) di Panduan *AWS Lambda Pengembang*.

## Video
<a name="connect-to-a-data-source-videos"></a>

Tonton video berikut untuk mempelajari selengkapnya tentang menggunakan Kueri Gabungan Athena.

**Video: Analisis Hasil Kueri Federasi di Amazon Athena dengan Cepat**  
Video berikut menunjukkan cara menganalisis hasil kueri federasi Athena di Quick.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/HyM5d0TmwAQ/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/HyM5d0TmwAQ)


**Video: Alur Analitik Game**  
Video berikut menunjukkan cara men-deploy alur data tanpa server terukur untuk menelan, menyimpan, dan menganalisis data telemetri dari game dan layanan menggunakan kueri Gabungan Amazon Athena.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/xcS-flUMVbs/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/xcS-flUMVbs)


# Konektor sumber data yang tersedia
<a name="connectors-available"></a>

Bagian ini berisi daftar konektor sumber data Athena yang dapat Anda gunakan untuk mengkueri berbagai sumber data eksternal ke Amazon S3. Untuk menggunakan konektor dalam pertanyaan Athena Anda, konfigurasikan dan sebarkan ke akun Anda. 

## Pertimbangan dan batasan
<a name="connectors-available-considerations"></a>
+ Beberapa konektor prebuilt mengharuskan Anda membuat VPC dan grup keamanan sebelum Anda dapat menggunakan konektor. Untuk informasi tentang membuat VPCs, lihat[Buat VPC untuk konektor atau koneksi sumber data AWS Glue](athena-connectors-vpc-creation.md). 
+ Untuk menggunakan fitur Kueri Federasi Athena AWS Secrets Manager, Anda harus mengonfigurasi titik akhir pribadi Amazon VPC untuk Secrets Manager. *Untuk informasi selengkapnya, lihat [Membuat titik akhir pribadi VPC Secrets Manager di Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint-create) Pengguna.AWS Secrets Manager * 
+ Untuk konektor yang tidak mendukung pushdown predikat, kueri yang menyertakan predikat membutuhkan waktu lebih lama untuk dieksekusi. Untuk kumpulan data kecil, sangat sedikit data yang dipindai, dan kueri membutuhkan waktu rata-rata sekitar 2 menit. Namun, untuk kumpulan data besar, banyak kueri dapat habis waktu.
+ Beberapa sumber data federasi menggunakan terminologi untuk merujuk objek data yang berbeda dari Athena. Untuk informasi selengkapnya, lihat [Memahami kualifikasi nama tabel federasi](tables-qualifiers.md).
+ Kami memperbarui konektor kami secara berkala berdasarkan peningkatan dari database atau penyedia sumber data. Kami tidak mendukung sumber data end-of-life yang mendukung.
+ Untuk konektor yang tidak mendukung pagination ketika Anda daftar tabel, layanan web dapat time out jika database Anda memiliki banyak tabel dan metadata. Konektor berikut menyediakan dukungan pagination untuk daftar tabel:
  + DocumentDB
  + DynamoDB
  + MySQL
  + OpenSearch
  + Oracle
  + PostgreSQL
  + Redshift
  + SQL Server

## Mode penyelesai kasus di Federation SDK
<a name="case-resolver-modes"></a>

Federation SDK mendukung mode penyelesai kasus standar berikut untuk skema dan nama tabel:
+ `NONE`— Tidak mengubah kasus skema dan nama tabel yang diberikan.
+ `LOWER`— Huruf kecil semua skema dan nama tabel yang diberikan.
+ `UPPER`— Huruf besar semua skema dan nama tabel yang diberikan.
+ `ANNOTATION`- Mode ini dipertahankan hanya untuk kompatibilitas mundur dan didukung secara eksklusif oleh konektor Snowflake dan SAP HANA yang ada.
+ `CASE_INSENSITIVE_SEARCH`— Lakukan pencarian yang tidak peka huruf besar/kecil terhadap nama skema dan tabel.

## Dukungan konektor untuk mode pemecah kasus
<a name="connector-support-matrix"></a>

### Dukungan mode dasar
<a name="basic-mode-support"></a>

Semua konektor JDBC mendukung mode dasar berikut:
+ `NONE`
+ `LOWER`
+ `UPPER`

### Dukungan mode anotasi
<a name="annotation-mode-support"></a>

Hanya konektor berikut yang mendukung `ANNOTATION` mode:
+ Kepingan salju
+ SAP HANA

**catatan**  
Disarankan untuk menggunakan CASE\$1INSENSITIVE\$1SEARCH alih-alih ANOTATION.

### Dukungan pencarian case-insensitive
<a name="case-insensitive-search-support"></a>

Konektor berikut mendukung`CASE_INSENSITIVE_SEARCH`:
+ DataLake Gen2
+ Kepingan salju
+ Oracle
+ Sinaps
+ MySQL
+ PostgreSQL
+ Redshift
+ ClickHouse
+ SQL Server
+ DB2

## Batasan penyelesai kasus
<a name="case-resolver-limitations"></a>

Waspadai batasan berikut saat menggunakan mode penyelesai kasus:
+ Saat menggunakan `LOWER` mode, nama skema Anda dan semua tabel dalam skema harus dalam huruf kecil.
+ Saat menggunakan `UPPER` mode, nama skema Anda dan semua tabel dalam skema harus dalam huruf besar.
+ Saat menggunakan`CASE_INSENSITIVE_SEARCH`:
  + Nama skema harus unik
  + Nama tabel dalam skema harus unik (misalnya, Anda tidak dapat memiliki “Apple” dan “APPLE”)
+ Batasan integrasi Glue:
  + Glue hanya mendukung nama huruf kecil
  + Hanya `NONE` atau `LOWER` mode yang akan berfungsi saat mendaftarkan fungsi Lambda Anda dengan/ GlueDataCatalogLakeFormation

## Informasi tambahan
<a name="connectors-available-additional-resources"></a>
+ Untuk informasi tentang penggunaan konektor sumber data Athena, lihat [Gunakan Kueri Federasi Amazon Athena](federated-queries.md). 
+ Untuk informasi tentang kueri yang menggunakan konektor sumber data Athena, lihat. [Jalankan kueri federasi](running-federated-queries.md)

**Topics**
+ [Pertimbangan dan batasan](#connectors-available-considerations)
+ [Mode penyelesai kasus di Federation SDK](#case-resolver-modes)
+ [Dukungan konektor untuk mode pemecah kasus](#connector-support-matrix)
+ [Batasan penyelesai kasus](#case-resolver-limitations)
+ [Informasi tambahan](#connectors-available-additional-resources)
+ [Penyimpanan Danau Data Azure](connectors-adls-gen2.md)
+ [Sinaps Azure](connectors-azure-synapse.md)
+ [Sarang Cloudera](connectors-cloudera-hive.md)
+ [Cloudera Impala](connectors-cloudera-impala.md)
+ [CloudWatch](connectors-cloudwatch.md)
+ [CloudWatch metrik](connectors-cwmetrics.md)
+ [CMDB](connectors-cmdb.md)
+ [Db2](connectors-ibm-db2.md)
+ [Db2 iSeries](connectors-ibm-db2-as400.md)
+ [DocumentDB](connectors-docdb.md)
+ [DynamoDB](connectors-dynamodb.md)
+ [Google BigQuery](connectors-bigquery.md)
+ [Penyimpanan Awan Google](connectors-gcs.md)
+ [HBase](connectors-hbase.md)
+ [Hortonworks](connectors-hortonworks.md)
+ [Kafka](connectors-kafka.md)
+ [MSK](connectors-msk.md)
+ [MySQL](connectors-mysql.md)
+ [Neptune](connectors-neptune.md)
+ [OpenSearch](connectors-opensearch.md)
+ [Oracle](connectors-oracle.md)
+ [PostgreSQL](connectors-postgresql.md)
+ [Redis OSS](connectors-redis.md)
+ [Redshift](connectors-redshift.md)
+ [SAP HANA](connectors-sap-hana.md)
+ [Kepingan salju](connectors-snowflake.md)
+ [SQL Server](connectors-microsoft-sql-server.md)
+ [Teradata](connectors-teradata.md)
+ [Timestream](connectors-timestream.md)
+ [TPC-DS](connectors-tpcds.md)
+ [Vertica](connectors-vertica.md)

**catatan**  
[AthenaJdbcConnector](https://serverlessrepo.aws.amazon.com/applications/us-east-1/292517598671/AthenaJdbcConnector)(versi terbaru 2022.4.1) telah usang. [[Sebagai gantinya, gunakan konektor khusus database seperti yang untuk MySQL, Redshift[, atau PostgreSQL](connectors-mysql.md).](connectors-postgresql.md)](connectors-redshift.md)

# Konektor Gen2 Penyimpanan Data Lake Amazon Athena Azure (ADLS)
<a name="connectors-adls-gen2"></a>

Konektor Amazon Athena untuk [Azure Data Lake Storage (ADLS) Gen2 memungkinkan](https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/adls-gen2/) Amazon Athena menjalankan kueri SQL pada data yang disimpan di ADLS. Athena tidak dapat mengakses file yang disimpan di danau data secara langsung. 

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.
+ **Alur Kerja** - Konektor mengimplementasikan antarmuka JDBC, yang menggunakan driver. `com.microsoft.sqlserver.jdbc.SQLServerDriver` Konektor meneruskan kueri ke mesin Azure Synapse, yang kemudian mengakses data lake. 
+ **Penanganan data dan S3** - Biasanya, konektor Lambda menanyakan data secara langsung tanpa transfer ke Amazon S3. Namun, ketika data yang dikembalikan oleh fungsi Lambda melebihi batas Lambda, data akan ditulis ke bucket tumpahan Amazon S3 yang Anda tentukan sehingga Athena dapat membaca kelebihannya.
+ **Otentikasi AAD** — AAD dapat digunakan sebagai metode otentikasi untuk konektor Azure Synapse. Untuk menggunakan AAD, string koneksi JDBC yang digunakan konektor harus berisi parameter URL`authentication=ActiveDirectoryServicePrincipal`,, `AADSecurePrincipalId` dan. `AADSecurePrincipalSecret` Parameter ini dapat diteruskan secara langsung atau oleh Secrets Manager.

## Prasyarat
<a name="connectors-datalakegentwo-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-adls-gen2-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Tipe data tanggal dan stempel waktu dalam kondisi filter harus dilemparkan ke tipe data yang sesuai.

## Ketentuan
<a name="connectors-adls-gen2-terms"></a>

Istilah berikut berhubungan dengan konektor Azure Data Lake Storage Gen2.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-adls-gen2-parameters"></a>

Gunakan parameter di bagian ini untuk mengonfigurasi konektor Azure Data Lake Storage Gen2.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi Glue (disarankan)
<a name="adls-gen2-gc"></a>

Kami menyarankan Anda mengonfigurasi konektor Azure Data Lake Storage Gen2 dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Azure Data Lake Storage Gen2 Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type DATALAKEGEN2
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **none** — Jangan mengubah kasus skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait. 
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel.
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensyal.
Konektor Azure Data Lake Storage Gen2 yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Azure Data Lake Storage Gen2 yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="adls-gen2-legacy"></a>

#### String koneksi
<a name="connectors-adls-gen2-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
datalakegentwo://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-adls-gen2-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | DataLakeGen2MuxCompositeHandler | 
| Penangan metadata | DataLakeGen2MuxMetadataHandler | 
| Rekam handler | DataLakeGen2MuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-adls-gen2-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmydatalakegentwocatalog, maka nama variabel lingkungan adalah. mydatalakegentwocatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi DataLakeGen 2 MUX Lambda yang mendukung dua instance database`datalakegentwo1`: (default), dan. `datalakegentwo2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | datalakegentwo://jdbc:sqlserver://adlsgentwo1.hostname:port;databaseName=database\$1name;\$1\$1secret1\$1name\$1 | 
| datalakegentwo\$1catalog1\$1connection\$1string | datalakegentwo://jdbc:sqlserver://adlsgentwo1.hostname:port;databaseName=database\$1name;\$1\$1secret1\$1name\$1 | 
| datalakegentwo\$1catalog2\$1connection\$1string | datalakegentwo://jdbc:sqlserver://adlsgentwo2.hostname:port;databaseName=database\$1name;\$1\$1secret2\$1name\$1 | 

##### Memberikan kredensyal
<a name="connectors-adls-gen2-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensyal hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredensyal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${secret1_name}`.

```
datalakegentwo://jdbc:sqlserver://hostname:port;databaseName=database_name;${secret1_name}
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
datalakegentwo://jdbc:sqlserver://hostname:port;databaseName=database_name;user=user_name;password=password
```

#### Menggunakan handler koneksi tunggal
<a name="connectors-adls-gen2-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance Azure Data Lake Storage Gen2.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | DataLakeGen2CompositeHandler | 
| Penangan metadata | DataLakeGen2MetadataHandler | 
| Rekam handler | DataLakeGen2RecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-adls-gen2-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk satu instance Azure Data Lake Storage Gen2 yang didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | datalakegentwo://jdbc:sqlserver://hostname:port;databaseName=;\$1\$1secret\$1name\$1 | 

#### Parameter tumpahan
<a name="connectors-adls-gen2-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-adls-gen2-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk ADLS Gen2 dan Arrow.


****  

| ADLS Gen2 | Panah | 
| --- | --- | 
| bit | TINYINT | 
| tinyint | SMALLINT | 
| smallint | SMALLINT | 
| int | INT | 
| bigint | BIGINT | 
| desimal | DECIMAL | 
| numerik | FLOAT8 | 
| uang kecil | FLOAT8 | 
| money | DECIMAL | 
| mengapung [24] | FLOAT4 | 
| mengapung [53] | FLOAT8 | 
| real | FLOAT4 | 
| datetime | Tanggal (MILLISECOND) | 
| tanggal2 | Tanggal (MILLISECOND) | 
| smalldatetime | Tanggal (MILLISECOND) | 
| date | Tanggal (HARI) | 
| Waktu | VARCHAR | 
| datetimeoffset | Tanggal (MILLISECOND) | 
| arang [n] | VARCHAR | 
| varchar [n/maks] | VARCHAR | 

## Partisi dan split
<a name="connectors-adls-gen2-partitions-and-splits"></a>

Azure Data Lake Storage Gen2 menggunakan penyimpanan gumpalan Gen2 yang kompatibel dengan Hadoop untuk menyimpan file data. Data dari file-file ini ditanyakan dari mesin Azure Synapse. Mesin Azure Synapse memperlakukan data Gen2 yang disimpan dalam sistem file sebagai tabel eksternal. Partisi diimplementasikan berdasarkan jenis data. Jika data telah dipartisi dan didistribusikan dalam sistem penyimpanan Gen 2, konektor mengambil data sebagai split tunggal.

## Performa
<a name="connectors-adls-gen2-performance"></a>

Konektor Azure Data Lake Storage Gen2 menunjukkan kinerja kueri yang lebih lambat saat menjalankan beberapa kueri sekaligus, dan tunduk pada pembatasan.

Konektor Athena Azure Data Lake Storage Gen2 melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. Predikat sederhana dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri.

### Predikat
<a name="connectors-datalakegentwo-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena Azure Data Lake Storage Gen2 dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Azure Data Lake Storage Gen2 untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Gen2 Athena Azure Data Lake Storage berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-datalakegentwo-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Kueri passthrough
<a name="connectors-datalakegentwo-passthrough-queries"></a>

Konektor Azure Data Lake Storage Gen2 mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Azure Data Lake Storage Gen2, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh kueri berikut mendorong kueri ke sumber data di Azure Data Lake Storage Gen2. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-datalakegentwo-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-datalakegen2/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-datalakegen2/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-datalakegentwo-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-datalakegen2/pom.xml) untuk konektor Azure Data Lake Storage Gen2 di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-datalakegen2) GitHub di.com.

# Konektor Amazon Athena Azure Synapse
<a name="connectors-azure-synapse"></a>

Konektor Amazon Athena untuk analitik [Azure Synapse memungkinkan Amazon](https://docs.microsoft.com/en-us/azure/synapse-analytics/overview-what-is) Athena menjalankan kueri SQL pada database Azure Synapse Anda menggunakan JDBC.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-synapse-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-azure-synapse-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Dalam kondisi filter, Anda harus mentransmisikan tipe `Date` dan `Timestamp` data ke tipe data yang sesuai.
+ Untuk mencari nilai negatif dari jenis `Real` dan`Float`, gunakan `>=` operator `<=` atau.
+ Tipe `rowversion` data `binary` `varbinary``image`,, dan tidak didukung.

## Ketentuan
<a name="connectors-azure-synapse-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Synapse.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-azure-synapse-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Synapse.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi lem (disarankan)
<a name="connectors-azure-synapse-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor Synapse dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Synapse Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type SYNAPSE
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **none** — Jangan mengubah kasus skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait. 
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel.
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor Synapse yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Synapse yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi lama (disarankan)
<a name="connectors-azure-synapse-legacy"></a>

#### String koneksi
<a name="connectors-azure-synapse-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
synapse://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-azure-synapse-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Pawang komposit | SynapseMuxCompositeHandler | 
| Penangan metadata | SynapseMuxMetadataHandler | 
| Rekam handler | SynapseMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-azure-synapse-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmysynapsecatalog, maka nama variabel lingkungan adalah. mysynapsecatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Synapse MUX Lambda yang mendukung dua instance database`synapse1`: (default), dan. `synapse2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | synapse://jdbc:synapse://synapse1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| synapse\$1catalog1\$1connection\$1string | synapse://jdbc:synapse://synapse1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| synapse\$1catalog2\$1connection\$1string | synapse://jdbc:synapse://synapse2.hostname:port;databaseName=<database\$1name>;\$1\$1secret2\$1name\$1 | 

##### Memberikan kredensi
<a name="connectors-azure-synapse-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia \$1 \$1secret\$1name\$1.

```
synapse://jdbc:synapse://hostname:port;databaseName=<database_name>;${secret_name}
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
synapse://jdbc:synapse://hostname:port;databaseName=<database_name>;user=<user>;password=<password>
```

#### Menggunakan handler koneksi tunggal
<a name="connectors-azure-synapse-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance Synapse.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Pawang komposit | SynapseCompositeHandler | 
| Penangan metadata | SynapseMetadataHandler | 
| Rekam handler | SynapseRecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-azure-synapse-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk instance Synapse tunggal yang didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | synapse://jdbc:sqlserver://hostname:port;databaseName=<database\$1name>;\$1\$1secret\$1name\$1 | 

#### Mengkonfigurasi otentikasi Direktori Aktif
<a name="connectors-azure-synapse-configuring-active-directory-authentication"></a>

Konektor Amazon Athena Azure Synapse mendukung Otentikasi Direktori Aktif Microsoft. Sebelum Anda mulai, Anda harus mengkonfigurasi pengguna administratif di portal Microsoft Azure dan kemudian gunakan AWS Secrets Manager untuk membuat rahasia.

**Untuk mengatur pengguna administratif Direktori Aktif**

1. [Menggunakan akun yang memiliki hak administratif, masuk ke portal Microsoft Azure dihttps://portal.azure.com/.](https://portal.azure.com/)

1. Di kotak pencarian, masukkan **Azure Synapse Analytics, lalu pilih **Azure** Synapse Analytics**.  
![\[Pilih Azure Synapse Analytics.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-azure-synapse-1.png)

1. Buka menu di sebelah kiri.  
![\[Pilih menu portal Azure.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-azure-synapse-2.png)

1. Di panel navigasi, pilih **Azure Active** Directory.

1. Pada tab **Set admin**, atur **admin Active Directory** ke pengguna baru atau yang sudah ada.  
![\[Gunakan tab Set admin\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-azure-synapse-3.png)

1. Di AWS Secrets Manager, simpan nama pengguna admin dan kredenal kata sandi. Untuk informasi tentang cara membuat rahasia di Secrets Manager, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

**Untuk melihat rahasia Anda di Secrets Manager**

1. Buka konsol Secrets Manager di [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Di panel navigasi, pilih **Rahasia**.

1. Pada halaman **Rahasia**, pilih tautan ke rahasia Anda.

1. Pada halaman detail untuk rahasia Anda, pilih **Ambil nilai rahasia**.  
![\[Melihat rahasia di AWS Secrets Manager.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-azure-synapse-4.png)

##### Memodifikasi string koneksi
<a name="connectors-azure-synapse-modifying-the-connection-string"></a>

Untuk mengaktifkan Otentikasi Direktori Aktif untuk konektor, ubah string koneksi menggunakan sintaks berikut:

```
synapse://jdbc:synapse://hostname:port;databaseName=database_name;authentication=ActiveDirectoryPassword;{secret_name}
```

##### Menggunakan ActiveDirectoryServicePrincipal
<a name="connectors-azure-synapse-using-activedirectoryserviceprincipal"></a>

Konektor Amazon Athena Azure Synapse juga mendukung. `ActiveDirectoryServicePrincipal` Untuk mengaktifkan ini, ubah string koneksi sebagai berikut.

```
synapse://jdbc:synapse://hostname:port;databaseName=database_name;authentication=ActiveDirectoryServicePrincipal;{secret_name}
```

Untuk`secret_name`, tentukan aplikasi atau ID klien sebagai nama pengguna dan rahasia identitas utama layanan dalam kata sandi.

#### Parameter tumpahan
<a name="connectors-azure-synapse-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-azure-synapse-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk Synapse dan Apache Arrow.


****  

| Sinaps | Panah | 
| --- | --- | 
| bit | TINYINT | 
| tinyint | SMALLINT | 
| smallint | SMALLINT | 
| int | INT | 
| bigint | BIGINT | 
| desimal | DECIMAL | 
| numerik | FLOAT8 | 
| uang kecil | FLOAT8 | 
| money | DECIMAL | 
| mengapung [24] | FLOAT4 | 
| mengapung [53] | FLOAT8 | 
| real | FLOAT4 | 
| datetime | Tanggal (MILLISECOND) | 
| tanggal2 | Tanggal (MILLISECOND) | 
| smalldatetime | Tanggal (MILLISECOND) | 
| date | Tanggal (HARI) | 
| Waktu | VARCHAR | 
| datetimeoffset | Tanggal (MILLISECOND) | 
| arang [n] | VARCHAR | 
| varchar [n/maks] | VARCHAR | 
| nchar [n] | VARCHAR | 
| nvarchar [n/max] | VARCHAR | 

## Partisi dan split
<a name="connectors-azure-synapse-partitions-and-splits"></a>

Partisi diwakili oleh kolom partisi tunggal tipe`varchar`. Synapse mendukung partisi rentang, sehingga partisi diimplementasikan dengan mengekstrak kolom partisi dan rentang partisi dari tabel metadata Synapse. Nilai rentang ini digunakan untuk membuat split.

## Performa
<a name="connectors-azure-synapse-performance"></a>

Memilih subset kolom secara signifikan memperlambat runtime kueri. Konektor menunjukkan pelambatan yang signifikan karena konkurensi.

Konektor Athena Synapse melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. Predikat sederhana dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri.

### Predikat
<a name="connectors-synapse-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena Synapse dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Synapse untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena Synapse berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-synapse-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Kueri passthrough
<a name="connectors-synapse-passthrough-queries"></a>

Konektor Synapse mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Synapse, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di Synapse. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-synapse-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-synapse/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-synapse/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-synapse-additional-resources"></a>
+ *Untuk artikel yang menunjukkan cara menggunakan Quick dan Amazon Athena Federated Query untuk membuat dasbor dan visualisasi pada data yang disimpan dalam database Microsoft Azure Synapse, lihat Melakukan [analitik multi-cloud menggunakan Quick, Amazon Athena Federated Query,](https://aws.amazon.com/blogs/business-intelligence/perform-multi-cloud-analytics-using-amazon-quicksight-amazon-athena-federated-query-and-microsoft-azure-synapse/) dan Microsoft Azure Synapse di Blog Big Data.AWS *
+ Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-synapse/pom.xml) untuk konektor Synapse di.com. GitHub
+ Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-synapse) GitHub di.com.

# Konektor Amazon Athena Cloudera Hive
<a name="connectors-cloudera-hive"></a>

[Konektor Amazon Athena untuk Cloudera Hive memungkinkan Athena menjalankan kueri SQL pada distribusi Cloudera Hive Hadoop.](https://www.cloudera.com/products/open-source/apache-hadoop/apache-hive.html) Konektor mengubah kueri Athena SQL Anda menjadi sintaks HiveQL yang setara. 

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

## Prasyarat
<a name="connectors-hive-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).
+ Siapkan VPC dan grup keamanan sebelum Anda menggunakan konektor ini. Untuk informasi selengkapnya, lihat [Buat VPC untuk konektor atau koneksi sumber data AWS Glue](athena-connectors-vpc-creation.md).

## Batasan
<a name="connectors-cloudera-hive-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.

## Ketentuan
<a name="connectors-cloudera-hive-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Cloudera Hive.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-cloudera-hive-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Cloudera Hive.

### Koneksi lem (disarankan)
<a name="connectors-cloudera-hive-gc"></a>

Kami menyarankan Anda mengonfigurasi konektor Cloudera Hive dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Cloudera Hive Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type CLOUDERAHIVE
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **none** — Jangan mengubah kasus skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait. 
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel.
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor Cloudera Hive yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Cloudera Hive yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-cloudera-hive-legacy"></a>

#### String koneksi
<a name="connectors-cloudera-hive-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
hive://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-cloudera-hive-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | HiveMuxCompositeHandler | 
| Penangan metadata | HiveMuxMetadataHandler | 
| Rekam handler | HiveMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-cloudera-hive-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmyhivecatalog, maka nama variabel lingkungan adalah. myhivecatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Hive MUX Lambda yang mendukung dua instance database: `hive1` (default), dan. `hive2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1:10000/default;\$1\$1Test/RDS/hive1\$1 | 
| hive2\$1catalog1\$1connection\$1string | hive://jdbc:hive2://hive1:10000/default;\$1\$1Test/RDS/hive1\$1 | 
| hive2\$1catalog2\$1connection\$1string | hive://jdbc:hive2://hive2:10000/default;UID=sample&PWD=sample | 

##### Memberikan kredensi
<a name="connectors-cloudera-hive-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, konektor Cloudera Hive memerlukan rahasia dari. AWS Secrets Manager[Untuk menggunakan fitur Kueri Federasi Athena, VPC yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager. AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

Masukkan nama rahasia AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${Test/RDS/hive1}`.

```
hive://jdbc:hive2://hive1:10000/default;...&${Test/RDS/hive1}&...
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
hive://jdbc:hive2://hive1:10000/default;...&UID=sample2&PWD=sample2&...
```

Saat ini, konektor Cloudera Hive mengenali properti `UID` dan `PWD` JDBC.

#### Menggunakan handler koneksi tunggal
<a name="connectors-cloudera-hive-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance Cloudera Hive.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | HiveCompositeHandler | 
| Penangan metadata | HiveMetadataHandler | 
| Rekam handler | HiveRecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-cloudera-hive-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk instance Cloudera Hive tunggal yang didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1:10000/default;secret=\$1\$1Test/RDS/hive1\$1 | 

#### Parameter tumpahan
<a name="connectors-cloudera-hive-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-cloudera-hive-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC, Cloudera Hive, dan Arrow.


****  

| JDBC | Sarang Cloudera | Panah | 
| --- | --- | --- | 
| Boolean | Boolean | Bit | 
| Bilangan Bulat | TINYINT | Mungil | 
| Pendek | SMALLINT | Orang kecil | 
| Bilangan Bulat | INT | Int | 
| Panjang | BIGINT | Bigint | 
| float | mengapung4 | Mengapung4 | 
| Ganda | mengapung8 | Mengapung8 | 
| Date | tanggal | DateDay | 
| Stempel waktu | timestamp | DateMilli | 
| String | VARCHAR | Varchar | 
| Byte | byte | Varbiner | 
| BigDecimal | Decimal | Decimal | 
| ARRAY | N/A (lihat catatan) | Daftar | 

**catatan**  
Saat ini, Cloudera Hive tidak mendukung jenis agregat`ARRAY`,,`MAP`, `STRUCT` atau. `UNIONTYPE` Kolom tipe agregat diperlakukan sebagai `VARCHAR` kolom dalam SQL.

## Partisi dan split
<a name="connectors-cloudera-hive-partitions-and-splits"></a>

Partisi digunakan untuk menentukan cara menghasilkan split untuk konektor. Athena membangun kolom sintetis tipe `varchar` yang mewakili skema partisi untuk tabel untuk membantu konektor menghasilkan split. Konektor tidak mengubah definisi tabel yang sebenarnya.

## Performa
<a name="connectors-cloudera-hive-performance"></a>

Cloudera Hive mendukung partisi statis. Konektor Athena Cloudera Hive dapat mengambil data dari partisi ini secara paralel. Jika Anda ingin menanyakan kumpulan data yang sangat besar dengan distribusi partisi seragam, partisi statis sangat disarankan. Konektor Cloudera Hive tahan terhadap pelambatan karena konkurensi.

Konektor Athena Cloudera Hive melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa, predikat sederhana, dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri.

### Klausul LIMIT
<a name="connectors-hive-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Predikat
<a name="connectors-hive-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa query SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena Cloudera Hive dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Cloudera Hive untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena Cloudera Hive berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-hive-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Kueri passthrough
<a name="connectors-hive-passthrough-queries"></a>

Konektor Cloudera Hive mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Cloudera Hive, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di Cloudera Hive. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-hive-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-hive/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-hive/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-hive-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-hive/pom.xml) untuk konektor Cloudera Hive di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudera-hive) GitHub di.com.

# Konektor Amazon Athena Cloudera Impala
<a name="connectors-cloudera-impala"></a>

[Konektor Amazon Athena Cloudera Impala memungkinkan Athena menjalankan kueri SQL pada distribusi Cloudera Impala.](https://docs.cloudera.com/cdw-runtime/cloud/impala-overview/topics/impala-overview.html) Konektor mengubah kueri Athena SQL Anda ke sintaks Impala yang setara.

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

## Prasyarat
<a name="connectors-impala-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).
+ Siapkan VPC dan grup keamanan sebelum Anda menggunakan konektor ini. Untuk informasi selengkapnya, lihat [Buat VPC untuk konektor atau koneksi sumber data AWS Glue](athena-connectors-vpc-creation.md).

## Batasan
<a name="connectors-cloudera-impala-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.

## Ketentuan
<a name="connectors-cloudera-impala-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Cloudera Impala.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-cloudera-impala-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Cloudera Impala.

### Koneksi lem (disarankan)
<a name="connectors-cloudera-impala-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor Cloudera Impala dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Cloudera Impala Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type CLOUDERAIMPALA
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **none** — Jangan mengubah kasus skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait. 
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel.
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor Cloudera Impala yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Cloudera Impala yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-cloudera-impala-legacy"></a>

#### String koneksi
<a name="connectors-cloudera-impala-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke cluster Impala.

```
impala://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-cloudera-impala-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | ImpalaMuxCompositeHandler | 
| Penangan metadata | ImpalaMuxMetadataHandler | 
| Rekam handler | ImpalaMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-cloudera-impala-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. String koneksi cluster Impala untuk katalog Athena. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmyimpalacatalog, maka nama variabel lingkungan adalah. myimpalacatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Impala MUX Lambda yang mendukung dua instance database: `impala1` (default), dan. `impala2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | impala://jdbc:impala://some.impala.host.name:21050/?\$1\$1Test/impala1\$1 | 
| impala\$1catalog1\$1connection\$1string | impala://jdbc:impala://someother.impala.host.name:21050/?\$1\$1Test/impala1\$1 | 
| impala\$1catalog2\$1connection\$1string | impala://jdbc:impala://another.impala.host.name:21050/?UID=sample&PWD=sample | 

##### Memberikan kredensi
<a name="connectors-cloudera-impala-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi dengan erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${Test/impala1host}`.

```
impala://jdbc:impala://Impala1host:21050/?...&${Test/impala1host}&...
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
impala://jdbc:impala://Impala1host:21050/?...&UID=sample2&PWD=sample2&...
```

Saat ini, Cloudera Impala mengenali properti `UID` dan `PWD` JDBC.

#### Menggunakan handler koneksi tunggal
<a name="connectors-cloudera-impala-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance Cloudera Impala.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | ImpalaCompositeHandler | 
| Penangan metadata | ImpalaMetadataHandler | 
| Rekam handler | ImpalaRecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-cloudera-impala-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk instance Cloudera Impala tunggal yang didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | impala://jdbc:impala://Impala1host:21050/?secret=\$1\$1Test/impala1host\$1 | 

#### Parameter tumpahan
<a name="connectors-cloudera-impala-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-cloudera-impala-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC, Cloudera Impala, dan Arrow.


****  

| JDBC | Cloudera Impala | Panah | 
| --- | --- | --- | 
| Boolean | Boolean | Bit | 
| Bilangan Bulat | TINYINT | Mungil | 
| Pendek | SMALLINT | Orang kecil | 
| Bilangan Bulat | INT | Int | 
| Panjang | BIGINT | Bigint | 
| float | mengapung4 | Mengapung4 | 
| Ganda | mengapung8 | Mengapung8 | 
| Date | tanggal | DateDay | 
| Stempel waktu | timestamp | DateMilli | 
| String | VARCHAR | Varchar | 
| Byte | byte | Varbiner | 
| BigDecimal | Decimal | Decimal | 
| ARRAY | N/A (lihat catatan) | Daftar | 

**catatan**  
Saat ini, Cloudera Impala tidak mendukung jenis agregat`ARRAY`,,`MAP`, `STRUCT` atau. `UNIONTYPE` Kolom tipe agregat diperlakukan sebagai `VARCHAR` kolom dalam SQL.

## Partisi dan split
<a name="connectors-cloudera-impala-partitions-and-splits"></a>

Partisi digunakan untuk menentukan cara menghasilkan split untuk konektor. Athena membangun kolom sintetis tipe `varchar` yang mewakili skema partisi untuk tabel untuk membantu konektor menghasilkan split. Konektor tidak mengubah definisi tabel yang sebenarnya.

## Performa
<a name="connectors-cloudera-impala-performance"></a>

Cloudera Impala mendukung partisi statis. Konektor Athena Cloudera Impala dapat mengambil data dari partisi ini secara paralel. Jika Anda ingin menanyakan kumpulan data yang sangat besar dengan distribusi partisi yang seragam, partisi statis sangat disarankan. Konektor Cloudera Impala tahan terhadap pelambatan karena konkurensi.

Konektor Athena Cloudera Impala melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa, predikat sederhana, dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri.

### Klausul LIMIT
<a name="connectors-impala-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Predikat
<a name="connectors-impala-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena Cloudera Impala dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Cloudera Impala untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena Cloudera Impala berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-impala-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Kueri passthrough
<a name="connectors-impala-passthrough-queries"></a>

Konektor Cloudera Impala mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Cloudera Impala, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di Cloudera Impala. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-impala-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-impala/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-impala/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-impala-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-impala/pom.xml) untuk konektor Cloudera Impala di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudera-impala) GitHub di.com.

# Konektor Amazon Athena CloudWatch
<a name="connectors-cloudwatch"></a>

 CloudWatch Konektor Amazon Athena memungkinkan Amazon Athena untuk berkomunikasi sehingga Anda dapat menanyakan data log Anda CloudWatch dengan SQL.

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

Konektor memetakan skema LogGroups sebagai Anda dan masing-masing LogStream sebagai tabel. Konektor juga memetakan `all_log_streams` tampilan khusus yang berisi semua yang LogStreams ada di file LogGroup. Tampilan ini memungkinkan Anda untuk menanyakan semua log LogGroup sekaligus alih-alih mencari melalui masing-masing LogStream secara individual.

## Prasyarat
<a name="connectors-cloudwatch-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Parameter
<a name="connectors-cloudwatch-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi CloudWatch konektor.

### Koneksi Glue (disarankan)
<a name="connectors-cloudwatch-gc"></a>

Kami menyarankan Anda mengkonfigurasi CloudWatch konektor dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan CloudWatch konektor Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type CLOUDWATCH
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
 CloudWatch Konektor yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
 CloudWatch Konektor yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-cloudwatch-legacy"></a>
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)

[Konektor ini juga mendukung [kontrol kemacetan AIMD](https://en.wikipedia.org/wiki/Additive_increase/multiplicative_decrease) untuk menangani peristiwa pelambatan dari melalui konstruksi CloudWatch Amazon Athena Query Federation SDK.](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk) `ThrottlingInvoker` Anda dapat mengubah perilaku pelambatan default dengan menyetel salah satu variabel lingkungan opsional berikut:
+ **throttle\$1initial\$1delay\$1ms - Penundaan panggilan** awal diterapkan setelah peristiwa kemacetan pertama. Defaultnya adalah 10 milidetik.
+ **throttle\$1max\$1delay\$1ms — Penundaan** maksimum antara panggilan. Anda dapat memperoleh TPS dengan membaginya menjadi 1000ms. Defaultnya adalah 1000 milidetik.
+ **throttle\$1decrease\$1factor —** Faktor dimana Athena mengurangi tingkat panggilan. Defaultnya adalah 0,5
+ **throttle\$1increase\$1ms — Tingkat di mana Athena** mengurangi penundaan panggilan. Defaultnya adalah 10 milidetik.

## Database dan tabel
<a name="connectors-cloudwatch-databases-and-tables"></a>

 CloudWatch Konektor Athena memetakan skema LogGroups sebagai Anda (yaitu, database) dan masing-masing LogStream sebagai tabel. Konektor juga memetakan `all_log_streams` tampilan khusus yang berisi semua yang LogStreams ada di file LogGroup. Tampilan ini memungkinkan Anda untuk menanyakan semua log LogGroup sekaligus alih-alih mencari melalui masing-masing LogStream secara individual.

Setiap tabel yang dipetakan oleh konektor CloudWatch Athena memiliki skema berikut. Skema ini cocok dengan bidang yang disediakan oleh CloudWatch Log.
+ **log\$1stream** — Sebuah `VARCHAR` yang berisi nama dari LogStream mana baris berasal.
+ **waktu** — An `INT64` yang berisi waktu epoch ketika baris log dihasilkan.
+ **message** — A `VARCHAR` yang berisi pesan log.

**Contoh**  
Contoh berikut menunjukkan bagaimana melakukan `SELECT` query pada tertentu LogStream.

```
SELECT * 
FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."log_stream_name" 
LIMIT 100
```

Contoh berikut menunjukkan bagaimana menggunakan `all_log_streams` tampilan untuk melakukan query pada semua LogStreams dalam tertentu LogGroup. 

```
SELECT * 
FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."all_log_streams" 
LIMIT 100
```

## Izin yang Diperlukan
<a name="connectors-cloudwatch-required-permissions"></a>

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian file [athena-cloudwatch.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudwatch/athena-cloudwatch.yaml). Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
+ **CloudWatch Log Baca/Tulis** — Konektor menggunakan izin ini untuk membaca data log Anda dan menulis log diagnostiknya.

## Performa
<a name="connectors-cloudwatch-performance"></a>

 CloudWatch Konektor Athena mencoba mengoptimalkan kueri CloudWatch dengan memparalelkan pemindaian aliran log yang diperlukan untuk kueri Anda. Untuk filter periode waktu tertentu, pushdown predikat dilakukan baik di dalam fungsi Lambda maupun di dalam Log. CloudWatch 

Untuk performa terbaik, gunakan hanya huruf kecil untuk nama grup log dan nama aliran log Anda. Menggunakan casing campuran menyebabkan konektor melakukan pencarian case insensitive yang lebih intensif secara komputasi.

**catatan**  
 CloudWatch Konektor tidak mendukung nama database huruf besar. 

## Kueri passthrough
<a name="connectors-cloudwatch-passthrough-queries"></a>

 CloudWatch Konektor mendukung kueri [passthrough yang menggunakan sintaks kueri CloudWatch ](federated-query-passthrough.md) [Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). Untuk informasi selengkapnya tentang Wawasan CloudWatch Log, lihat [Menganalisis data CloudWatch log dengan Wawasan Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) di *Panduan Pengguna CloudWatch Log Amazon*.

Untuk membuat kueri passthrough dengan CloudWatch, gunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            STARTTIME => 'start_time',
            ENDTIME => 'end_time',
            QUERYSTRING => 'query_string',
            LOGGROUPNAMES => 'log_group-names',
            LIMIT => 'max_number_of_results'
        ))
```

Berikut contoh CloudWatch passthrough query filter untuk `duration` bidang ketika tidak sama dengan 1000.

```
SELECT * FROM TABLE(
        system.query(
            STARTTIME => '1710918615308',
            ENDTIME => '1710918615972',
            QUERYSTRING => 'fields @duration | filter @duration != 1000',
            LOGGROUPNAMES => '/aws/lambda/cloudwatch-test-1',
            LIMIT => '2'
            ))
```

## Informasi lisensi
<a name="connectors-cloudwatch-license-information"></a>

Proyek CloudWatch konektor Amazon Athena dilisensikan di bawah Lisensi [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Sumber daya tambahan
<a name="connectors-cloudwatch-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudwatch) GitHub di.com.

# Konektor Metrik Amazon Athena CloudWatch
<a name="connectors-cwmetrics"></a>

Konektor CloudWatch Metrik Amazon Athena memungkinkan Amazon Athena untuk menanyakan CloudWatch data Metrik dengan SQL.

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

Untuk informasi tentang memublikasikan metrik kueri CloudWatch dari Athena itu sendiri, lihat. [Menggunakan CloudWatch dan EventBridge memantau kueri dan mengendalikan biaya](workgroups-control-limits.md)

## Prasyarat
<a name="connectors-cwmetrics-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Parameter
<a name="connectors-cwmetrics-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor CloudWatch Metrik.

### Koneksi Glue (disarankan)
<a name="connectors-cwmetrics-gc"></a>

Kami menyarankan Anda mengonfigurasi konektor CloudWatch Metrik dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor CloudWatch Metrik Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type CLOUDWATCHMETRICS
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor CloudWatch Metrik yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor CloudWatch Metrik yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-cwmetrics-legacy"></a>
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)

[Konektor ini juga mendukung [kontrol kemacetan AIMD](https://en.wikipedia.org/wiki/Additive_increase/multiplicative_decrease) untuk menangani peristiwa pelambatan dari melalui konstruksi CloudWatch Amazon Athena Query Federation SDK.](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk) `ThrottlingInvoker` Anda dapat mengubah perilaku pelambatan default dengan menyetel salah satu variabel lingkungan opsional berikut:
+ **throttle\$1initial\$1delay\$1ms - Penundaan panggilan** awal diterapkan setelah peristiwa kemacetan pertama. Defaultnya adalah 10 milidetik.
+ **throttle\$1max\$1delay\$1ms — Penundaan** maksimum antara panggilan. Anda dapat memperoleh TPS dengan membaginya menjadi 1000ms. Defaultnya adalah 1000 milidetik.
+ **throttle\$1decrease\$1factor —** Faktor dimana Athena mengurangi tingkat panggilan. Defaultnya adalah 0,5
+ **throttle\$1increase\$1ms — Tingkat di mana Athena** mengurangi penundaan panggilan. Defaultnya adalah 10 milidetik.

## Database dan tabel
<a name="connectors-cwmetrics-databases-and-tables"></a>

Konektor Athena CloudWatch Metrics memetakan ruang nama, dimensi, metrik, dan nilai metrik Anda ke dalam dua tabel dalam satu skema yang disebut. `default`

### Tabel metrik
<a name="connectors-cwmetrics-the-metrics-table"></a>

`metrics`Tabel berisi metrik yang tersedia sebagaimana didefinisikan secara unik oleh kombinasi namespace, set, dan nama. `metrics`Tabel berisi kolom berikut.
+ **namespace** — A yang `VARCHAR` berisi namespace.
+ **metric\$1name** — A yang `VARCHAR` berisi nama metrik.
+ **dimensi** — Sebuah `LIST` `STRUCT` objek yang terdiri dari `dim_name (VARCHAR)` dan`dim_value (VARCHAR)`.
+ **statistik** — Sebuah `LIST` `VARCH` statistik (misalnya,, `p90``AVERAGE`,...) tersedia untuk metrik.

### Tabel metric\$1samples
<a name="connectors-cwmetrics-the-metric_samples-table"></a>

`metric_samples`Tabel berisi sampel metrik yang tersedia untuk setiap metrik dalam `metrics` tabel. `metric_samples`Tabel berisi kolom berikut.
+ **namespace** — A `VARCHAR` yang berisi namespace.
+ **metric\$1name** — A `VARCHAR` yang berisi nama metrik.
+ **dimensi** — Sebuah `LIST` `STRUCT` objek yang terdiri dari `dim_name (VARCHAR)` dan`dim_value (VARCHAR)`.
+ **dim\$1name** - Bidang `VARCHAR` kenyamanan yang dapat Anda gunakan untuk memfilter dengan mudah pada satu nama dimensi.
+ **dim\$1value** — Bidang `VARCHAR` kenyamanan yang dapat Anda gunakan untuk memfilter dengan mudah pada nilai dimensi tunggal.
+ **Periode** — `INT` Bidang yang mewakili “periode” metrik dalam detik (misalnya, metrik 60 detik).
+ **stempel waktu** — `BIGINT` Bidang yang mewakili waktu epoch dalam detik untuk sampel metrik.
+ **value** — `FLOAT8` Bidang yang berisi nilai sampel.
+ **statistik** — A `VARCHAR` yang berisi tipe statistik sampel (misalnya, `AVERAGE` atau`p90`).

## Izin yang Diperlukan
<a name="connectors-cwmetrics-required-permissions"></a>

Untuk detail selengkapnya tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian [athena-cloudwatch-metricsfile.yaml.](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudwatch-metrics/athena-cloudwatch-metrics.yaml) Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
+ **CloudWatch Metrik ReadOnly** — Konektor menggunakan izin ini untuk menanyakan data metrik Anda.
+ **CloudWatch Log Tulis** — Konektor menggunakan akses ini untuk menulis log diagnostiknya.

## Performa
<a name="connectors-cwmetrics-performance"></a>

Konektor CloudWatch Metrik Athena mencoba mengoptimalkan kueri terhadap CloudWatch Metrik dengan memparalelkan pemindaian aliran log yang diperlukan untuk kueri Anda. Untuk periode waktu tertentu, metrik, namespace, dan filter dimensi, pushdown predikat dilakukan baik di dalam fungsi Lambda maupun di dalam Log. CloudWatch 

## Informasi lisensi
<a name="connectors-cwmetrics-license-information"></a>

[Proyek konektor CloudWatch Metrik Amazon Athena dilisensikan di bawah Lisensi Apache-2.0.](https://www.apache.org/licenses/LICENSE-2.0.html)

## Sumber daya tambahan
<a name="connectors-cwmetrics-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudwatch-metrics) GitHub di.com.

# Konektor CMDB Amazon Athena AWS
<a name="connectors-cmdb"></a>

 AWS Konektor CMDB Amazon Athena memungkinkan Athena berkomunikasi dengan berbagai AWS layanan sehingga Anda dapat menanyakannya dengan SQL.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-cmdb-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Parameter
<a name="connectors-cmdb-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor AWS CMDB.

### Koneksi lem (disarankan)
<a name="connectors-cmdb-gc"></a>

Kami menyarankan Anda mengonfigurasi konektor AWS CMDB dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor AWS CMDB Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type CMDB
```

**Properti lingkungan Lambda**

**glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor AWS CMDB yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor AWS CMDB yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-cmdb-legacy"></a>

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue 

Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat tanpa koneksi Glue terkait. Gunakan parameter berikut hanya jika Anda [menggunakan versi sebelumnya dari konektor sumber data Athena secara manual](connect-data-source-serverless-app-repo.md) atau saat `glue_connection` properti lingkungan tidak ditentukan.

**Properti lingkungan Lambda**
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **default\$1ec2\$1image\$1owner — (Opsional) Saat disetel, mengontrol pemilik EC2 ** [gambar Amazon default yang memfilter Gambar Mesin Amazon (AMI).](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) Jika Anda tidak menetapkan nilai ini dan kueri Anda terhadap tabel EC2 gambar tidak menyertakan filter untuk pemilik, hasil Anda akan mencakup semua gambar publik.

## Database dan tabel
<a name="connectors-cmdb-databases-and-tables"></a>

Konektor AWS CMDB Athena membuat database dan tabel berikut tersedia untuk menanyakan inventaris sumber daya Anda. AWS Untuk informasi selengkapnya tentang kolom yang tersedia di setiap tabel, jalankan `DESCRIBE database.table` pernyataan menggunakan konsol Athena atau API.
+ **ec2** — Database ini berisi sumber daya EC2 terkait Amazon, termasuk yang berikut ini.
+ **ebs\$1volumes** - Berisi detail volume Amazon EBS Anda.
+ **ec2\$1instances** - Berisi rincian Instans Anda. EC2 
+ **ec2\$1images** - Berisi rincian gambar Instance Anda EC2 .
+ **routing\$1tables** - Berisi rincian Tabel Routing VPC Anda.
+ **security\$1groups** - Berisi rincian grup keamanan Anda.
+ **subnet** - Berisi detail Subnet VPC Anda.
+ **vpcs** - Berisi detail Anda VPCs.
+ **emr** - Database ini berisi sumber daya terkait Amazon EMR, termasuk yang berikut ini.
+ **emr\$1clusters** - Berisi rincian Cluster EMR Anda.
+ **rds** - Database ini berisi sumber daya terkait Amazon RDS, termasuk yang berikut ini.
+ **rds\$1instances** - Berisi rincian Instans RDS Anda.
+ **s3** — Database ini berisi sumber daya terkait RDS, termasuk yang berikut ini.
+ **ember** - Berisi detail ember Amazon S3 Anda.
+ **objek** - Berisi detail objek Amazon S3 Anda, tidak termasuk isinya.

## Izin yang Diperlukan
<a name="connectors-cmdb-required-permissions"></a>

Untuk detail selengkapnya tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian [athena-aws-cmdbfile.yaml.](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-aws-cmdb/athena-aws-cmdb.yaml) Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
+ **Daftar S3** - Konektor menggunakan izin ini untuk mencantumkan bucket dan objek Amazon S3 Anda.
+ **EC2 Jelaskan** — Konektor menggunakan izin ini untuk mendeskripsikan sumber daya seperti EC2 instans Amazon, grup keamanan VPCs, dan volume Amazon EBS Anda.
+ **EMR Description/List** — Konektor menggunakan izin ini untuk menggambarkan cluster EMR Anda.
+ **RDS Deskripsikan** — Konektor menggunakan izin ini untuk menggambarkan Instans RDS Anda.

## Performa
<a name="connectors-cmdb-performance"></a>

Saat ini, konektor AWS CMDB Athena tidak mendukung pemindaian paralel. Predikat pushdown dilakukan dalam fungsi Lambda. Jika memungkinkan, predikat sebagian didorong ke layanan yang ditanyakan. Misalnya, kueri untuk detail EC2 instance Amazon tertentu memanggil EC2 API dengan ID instans tertentu untuk menjalankan operasi deskripsi yang ditargetkan.

## Informasi lisensi
<a name="connectors-cmdb-license-information"></a>

[Proyek konektor AWS CMDB Amazon Athena dilisensikan di bawah Lisensi Apache-2.0.](https://www.apache.org/licenses/LICENSE-2.0.html)

## Sumber daya tambahan
<a name="connectors-cmdb-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-aws-cmdb) GitHub di.com.

# Konektor Amazon Athena IBM Db2
<a name="connectors-ibm-db2"></a>

Konektor Amazon Athena untuk Db2 memungkinkan Amazon Athena menjalankan kueri SQL pada database IBM Db2 Anda menggunakan JDBC.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-dbtwo-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).
+ Siapkan VPC dan grup keamanan sebelum Anda menggunakan konektor ini. Untuk informasi selengkapnya, lihat [Buat VPC untuk konektor atau koneksi sumber data AWS Glue](athena-connectors-vpc-creation.md).

## Batasan
<a name="connectors-ibm-db2-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Tipe data tanggal dan stempel waktu dalam kondisi filter harus dilemparkan ke tipe data yang sesuai.

## Ketentuan
<a name="connectors-ibm-db2-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Db2.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-ibm-db2-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Db2.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi Glue (disarankan)
<a name="connectors-ibm-db2-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor Db2 dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Db2 Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type DB2
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **none** — Jangan mengubah kasus skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait. 
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel.
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor Db2 yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Db2 yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-ibm-db2-legacy"></a>

#### String koneksi
<a name="connectors-ibm-db2-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
dbtwo://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-ibm-db2-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas-kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | Db2MuxCompositeHandler | 
| Penangan metadata | Db2MuxMetadataHandler | 
| Rekam handler | Db2MuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-ibm-db2-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmydbtwocatalog, maka nama variabel lingkungan adalah. mydbtwocatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Db2 MUX Lambda yang mendukung dua instance database`dbtwo1`: (default), dan. `dbtwo2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | dbtwo://jdbc:db2://dbtwo1.hostname:port/database\$1name:\$1\$1secret1\$1name\$1 | 
| dbtwo\$1catalog1\$1connection\$1string | dbtwo://jdbc:db2://dbtwo1.hostname:port/database\$1name:\$1\$1secret1\$1name\$1 | 
| dbtwo\$1catalog2\$1connection\$1string | dbtwo://jdbc:db2://dbtwo2.hostname:port/database\$1name:\$1\$1secret2\$1name\$1 | 

##### Memberikan kredensi
<a name="connectors-ibm-db2-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi dengan erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${secret_name}`.

```
dbtwo://jdbc:db2://hostname:port/database_name:${secret_name}
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
dbtwo://jdbc:db2://hostname:port/database_name:user=user_name;password=password;
```

#### Menggunakan handler koneksi tunggal
<a name="connectors-ibm-db2-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance Db2.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | Db2CompositeHandler | 
| Penangan metadata | Db2MetadataHandler | 
| Rekam handler | Db2RecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-ibm-db2-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk contoh Db2 tunggal didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | dbtwo: //jdbc:db2: //hostname:port/: \$1 \$1secret\$1name\$1 database\$1name  | 

#### Parameter tumpahan
<a name="connectors-ibm-db2-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-ibm-db2-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC dan Arrow.


****  

| Db2 | Panah | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| DATE | TANGGAL | 
| TIME | VARCHAR | 
| TIMESTAMP | DATEMILLI | 
| DATETIME | DATEMILLI | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | DECIMAL | 
| REAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 
| DECFLOAT | FLOAT8 | 

## Partisi dan perpecahan
<a name="connectors-ibm-db2-partitions-and-splits"></a>

Partisi diwakili oleh satu atau lebih kolom partisi tipe`varchar`. Konektor Db2 membuat partisi menggunakan skema organisasi berikut.
+ Distribusikan dengan hash
+ Partisi berdasarkan jangkauan
+ Atur berdasarkan dimensi

Konektor mengambil rincian partisi seperti jumlah partisi dan nama kolom dari satu atau lebih tabel metadata Db2. Pemisahan dibuat berdasarkan jumlah partisi yang diidentifikasi. 

## Performa
<a name="connectors-ibm-db2-performance"></a>

Konektor Athena Db2 melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa, predikat sederhana, dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri.

### Klausul LIMIT
<a name="connectors-dbtwo-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Predikat
<a name="connectors-dbtwo-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena Db2 dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Db2 untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena Db2 berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-dbtwo-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Kueri passthrough
<a name="connectors-dbtwo-passthrough-queries"></a>

Konektor Db2 mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Db2, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di Db2. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-dbtwo-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-dbtwo-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2/pom.xml) untuk konektor Db2 di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-db2) GitHub di.com.

# Konektor Amazon Athena IBM Db2 AS/400 (Db2 iSeries)
<a name="connectors-ibm-db2-as400"></a>

Konektor Amazon Athena untuk Db2 AS/400 memungkinkan Amazon Athena menjalankan kueri SQL pada database IBM Db2 AS/400 (Db2 iSeries) Anda menggunakan JDBC.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-db2as400-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).
+ Siapkan VPC dan grup keamanan sebelum Anda menggunakan konektor ini. Untuk informasi selengkapnya, lihat [Buat VPC untuk konektor atau koneksi sumber data AWS Glue](athena-connectors-vpc-creation.md).

## Batasan
<a name="connectors-ibm-db2-as400-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Tipe data tanggal dan stempel waktu dalam kondisi filter harus dilemparkan ke tipe data yang sesuai.

## Ketentuan
<a name="connectors-ibm-db2-as400-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Db2 AS/400.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-ibm-db2-as400-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Db2 AS/400.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi lem (disarankan)
<a name="connectors-ibm-db2-as400-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor Db2 AS/400 dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Db2 AS/400 Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type DB2AS400
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **none** — Jangan mengubah kasus skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait. 
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel.
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor Db2 AS/400 yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Db2 AS/400 yang dibuat menggunakan koneksi Glue hanya mendukung 2. `ConnectionSchemaVersion`

### Koneksi warisan
<a name="connectors-ibm-db2-as400-legacy"></a>

#### String koneksi
<a name="connectors-ibm-db2-as400-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
db2as400://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-ibm-db2-as400-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | Db2MuxCompositeHandler | 
| Penangan metadata | Db2MuxMetadataHandler | 
| Rekam handler | Db2MuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-ibm-db2-as400-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmydb2as400catalog, maka nama variabel lingkungan adalah. mydb2as400catalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Db2 MUX Lambda yang mendukung dua instance database`db2as4001`: (default), dan. `db2as4002`


****  

| Properti | Nilai | 
| --- | --- | 
| default | db2as400://jdbc:as400://<ip\$1address>;<properties>;:\$1\$1<secret name>\$1; | 
| db2as400\$1catalog1\$1connection\$1string | db2as400://jdbc:as400://db2as4001.hostname/:\$1\$1secret1\$1name\$1 | 
| db2as400\$1catalog2\$1connection\$1string | db2as400://jdbc:as400://db2as4002.hostname/:\$1\$1secret2\$1name\$1 | 
| db2as400\$1catalog3\$1connection\$1string | db2as400://jdbc:as400://<ip\$1address>;user=<username>;password=<password>;<properties>; | 

##### Memberikan kredensi
<a name="connectors-ibm-db2-as400-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${secret_name}`.

```
db2as400://jdbc:as400://<ip_address>;<properties>;:${<secret_name>};
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
db2as400://jdbc:as400://<ip_address>;user=<username>;password=<password>;<properties>;
```

#### Menggunakan handler koneksi tunggal
<a name="connectors-ibm-db2-as400-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instans Db2 AS/400.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | Db2CompositeHandler | 
| Penangan metadata | Db2MetadataHandler | 
| Rekam handler | Db2RecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-ibm-db2-as400-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk satu contoh Db2 AS/400 didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | db2as400://jdbc:as400://<ip\$1address>;<properties>;:\$1\$1<secret\$1name>\$1; | 

#### Parameter tumpahan
<a name="connectors-ibm-db2-as400-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-ibm-db2-as400-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC dan Apache Arrow.


****  

| Db2 AS/400 | Panah | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| DATE | TANGGAL | 
| TIME | VARCHAR | 
| TIMESTAMP | DATEMILLI | 
| DATETIME | DATEMILLI | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | DECIMAL | 
| REAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 
| DECFLOAT | FLOAT8 | 

## Partisi dan split
<a name="connectors-ibm-db2-as400-partitions-and-splits"></a>

Partisi diwakili oleh satu atau lebih kolom partisi tipe`varchar`. Konektor Db2 AS/400 membuat partisi menggunakan skema organisasi berikut.
+ Distribusikan dengan hash
+ Partisi berdasarkan jangkauan
+ Atur berdasarkan dimensi

Konektor mengambil rincian partisi seperti jumlah partisi dan nama kolom dari satu atau lebih tabel metadata Db2 AS/400. Pemisahan dibuat berdasarkan jumlah partisi yang diidentifikasi. 

## Performa
<a name="connectors-db2-as400-performance"></a>

Untuk meningkatkan kinerja, gunakan predikat pushdown untuk kueri dari Athena, seperti pada contoh berikut.

```
SELECT * FROM "lambda:<LAMBDA_NAME>"."<SCHEMA_NAME>"."<TABLE_NAME>" 
 WHERE integercol = 2147483647
```

```
SELECT * FROM "lambda: <LAMBDA_NAME>"."<SCHEMA_NAME>"."<TABLE_NAME>" 
 WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Kueri passthrough
<a name="connectors-db2as400-passthrough-queries"></a>

[Konektor Db2 AS/400 mendukung kueri passthrough.](federated-query-passthrough.md) Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Db2 AS/400, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di Db2 AS/400. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-db2as400-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2-as400/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2-as400/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-db2as400-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2-as400/pom.xml) untuk konektor Db2 AS/400 di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-db2-as400) GitHub di.com.

# Konektor Amazon Athena DocumentDB
<a name="connectors-docdb"></a>

Konektor Amazon Athena DocumentDB memungkinkan Athena berkomunikasi dengan instans DocumentDB Anda sehingga Anda dapat menanyakan data DocumentDB Anda dengan SQL. Konektor juga bekerja dengan endpoint yang kompatibel dengan MongoDB.

Tidak seperti penyimpanan data relasional tradisional, koleksi Amazon DocumentDB tidak memiliki skema yang ditetapkan. DocumentDB tidak memiliki toko metadata. Setiap entri dalam koleksi DocumentDB dapat memiliki bidang dan tipe data yang berbeda.

Konektor DocumentDB mendukung dua mekanisme untuk menghasilkan informasi skema tabel: inferensi skema dasar dan metadata. AWS Glue Data Catalog 

Inferensi skema adalah default. Opsi ini memindai sejumlah kecil dokumen dalam koleksi Anda, membentuk gabungan semua bidang, dan memaksa bidang yang memiliki tipe data yang tidak tumpang tindih. Opsi ini berfungsi dengan baik untuk koleksi yang sebagian besar memiliki entri seragam.

Untuk koleksi dengan variasi tipe data yang lebih besar, konektor mendukung pengambilan metadata dari file. AWS Glue Data Catalog Jika konektor melihat AWS Glue database dan tabel yang cocok dengan database DocumentDB dan nama koleksi Anda, ia mendapatkan informasi skema dari tabel yang sesuai. AWS Glue Saat Anda membuat AWS Glue tabel, kami sarankan Anda menjadikannya superset dari semua bidang yang mungkin ingin Anda akses dari koleksi DocumentDB Anda. 

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan di harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-docdb-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Parameter
<a name="connectors-docdb-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor DocumentDB.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi Glue (disarankan)
<a name="connectors-docdb-gc"></a>

Kami menyarankan Anda mengonfigurasi konektor DocumentDB dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor DocumentDB Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type DOCUMENTDB
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor DocumentDB yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor DocumentDB yang dibuat menggunakan koneksi Glue hanya mendukung 2. `ConnectionSchemaVersion`

### Koneksi warisan
<a name="connectors-docdb-legacy"></a>
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **disable\$1glue** — (Opsional) Jika ada dan disetel ke true, konektor tidak mencoba untuk mengambil metadata tambahan dari. AWS Glue
+ **glue\$1catalog** [- (Opsional) Gunakan opsi ini untuk menentukan katalog lintas akun. AWS Glue](data-sources-glue-cross-account.md) Secara default, konektor mencoba untuk mendapatkan metadata dari akunnya sendiri AWS Glue .
+ **default\$1docdb** - Jika ada, menentukan string koneksi DocumentDB untuk digunakan ketika tidak ada variabel lingkungan khusus katalog ada.
+ **disable\$1projection\$1and\$1casing** - (Opsional) Menonaktifkan proyeksi dan casing. Gunakan jika Anda ingin menanyakan tabel Amazon DocumentDB yang menggunakan nama kolom peka huruf besar/kecil. `disable_projection_and_casing`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku pemetaan casing dan kolom: 
  + **false** — Ini adalah pengaturan default. Proyeksi diaktifkan, dan konektor mengharapkan semua nama kolom berada dalam huruf kecil. 
  + **benar** - Menonaktifkan proyeksi dan casing. Saat menggunakan `disable_projection_and_casing` parameter, ingatlah poin-poin berikut: 
    + Penggunaan parameter dapat menghasilkan penggunaan bandwidth yang lebih tinggi. Selain itu, jika fungsi Lambda Anda tidak sama Wilayah AWS dengan sumber data Anda, Anda akan dikenakan biaya transfer AWS lintas wilayah standar yang lebih tinggi sebagai akibat dari penggunaan bandwidth yang lebih tinggi. Untuk informasi selengkapnya tentang biaya transfer lintas wilayah, lihat [Biaya Transfer AWS Data untuk Arsitektur Server dan Tanpa Server](https://aws.amazon.com/blogs/apn/aws-data-transfer-charges-for-server-and-serverless-architectures/) di Blog Jaringan Mitra. AWS 
    + Karena jumlah byte yang lebih besar ditransfer dan karena jumlah byte yang lebih besar memerlukan waktu deserialisasi yang lebih tinggi, latensi keseluruhan dapat meningkat. 
+ **enable\$1case\$1insensitive\$1match** — (Opsional) Saat, melakukan pencarian yang tidak peka huruf besar/kecil terhadap skema dan nama tabel di `true` Amazon DocumentDB. Nilai default-nya `false`. Gunakan jika kueri Anda berisi skema huruf besar atau nama tabel.

#### Menentukan string koneksi
<a name="connectors-docdb-specifying-connection-strings"></a>

Anda dapat memberikan satu atau beberapa properti yang menentukan detail koneksi DocumentDB untuk instance DocumentDB yang Anda gunakan dengan konektor. Untuk melakukan ini, tetapkan variabel lingkungan Lambda yang sesuai dengan nama katalog yang ingin Anda gunakan di Athena. Misalnya, Anda ingin menggunakan kueri berikut untuk menanyakan dua instance DocumentDB yang berbeda dari Athena:

```
SELECT * FROM "docdb_instance_1".database.table
```

```
SELECT * FROM "docdb_instance_2".database.table
```

Sebelum Anda dapat menggunakan dua pernyataan SQL ini, Anda harus menambahkan dua variabel lingkungan ke fungsi `docdb_instance_1` Lambda Anda: dan. `docdb_instance_2` Nilai untuk masing-masing harus berupa string koneksi DocumentDB dalam format berikut:

```
mongodb://:@:/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0      
```

##### Menggunakan rahasia
<a name="connectors-docdb-using-secrets"></a>

Anda dapat secara opsional menggunakan AWS Secrets Manager sebagian atau seluruh nilai untuk detail string koneksi Anda. [Untuk menggunakan fitur Kueri Federasi Athena dengan Secrets Manager, VPC yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

Jika Anda menggunakan sintaks `${my_secret}` untuk memasukkan nama rahasia dari Secrets Manager di string koneksi Anda, konektor akan menggantikan `${my_secret}` dengan nilai teks biasa dari Secrets Manager persis. Rahasia harus disimpan sebagai rahasia teks biasa dengan nilai`<username>:<password>`. Rahasia yang disimpan sebagai tidak `{username:<username>,password:<password>}` akan diteruskan ke string koneksi dengan benar.

Rahasia juga dapat digunakan untuk seluruh string koneksi sepenuhnya, dan nama pengguna dan kata sandi dapat didefinisikan dalam rahasia.

Misalnya, Anda menyetel variabel lingkungan Lambda `docdb_instance_1` ke nilai berikut:

```
mongodb://${docdb_instance_1_creds}@myhostname.com:123/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0         
```

Athena Query Federation SDK secara otomatis mencoba untuk mengambil rahasia bernama dari Secrets `docdb_instance_1_creds` Manager dan menyuntikkan nilai tersebut sebagai pengganti. `${docdb_instance_1_creds}` Setiap bagian dari string koneksi yang dilampirkan oleh kombinasi `${ }` karakter ditafsirkan sebagai rahasia dari Secrets Manager. Jika Anda menentukan nama rahasia yang tidak dapat ditemukan konektor di Secrets Manager, konektor tidak menggantikan teks.

## Mengambil metadata tambahan
<a name="supplemental-metadata"></a>

Untuk mengambil metadata tambahan, ikuti langkah-langkah berikut untuk mengonfigurasi database dan tabel Glue Anda.

### Siapkan database Glue
<a name="setup-glue-database"></a>

1. Buat database Glue dengan nama yang sama dengan koleksi DocumentDB Anda.

1. Di bidang URI Lokasi, masukkan`docdb-metadata-flag`.

### Konfigurasikan tabel Glue
<a name="setup-glue-table"></a>

Tambahkan parameter berikut ke tabel Glue Anda:
+ `docdb-metadata-flag = true`
+ `columnMapping = apple=APPLE`

  Dalam contoh ini, `apple` mewakili nama kolom huruf kecil di Glue, dan `APPLE` mewakili nama kolom case-sensitive yang sebenarnya dalam koleksi DocumentDB Anda.

### Verifikasi pengambilan metadata
<a name="verify-metadata-retrieval"></a>

1. Jalankan kueri Anda.

1. Periksa CloudWatch log fungsi Lambda untuk pengambilan metadata yang berhasil. Pengambilan yang berhasil akan menampilkan entri log berikut:

   ```
   doGetTable: Retrieved schema for table[TableName{schemaName=test, tableName=profiles}] from AWS Glue.
   ```

**catatan**  
Jika tabel Anda sudah memiliki `columnMapping` bidang yang dikonfigurasi, Anda hanya perlu menambahkan `docdb-metadata-flag = true` parameter ke properti tabel.

## Menyiapkan database dan tabel di AWS Glue
<a name="connectors-docdb-setting-up-databases-and-tables-in-aws-glue"></a>

Karena kemampuan inferensi skema bawaan konektor memindai sejumlah dokumen terbatas dan hanya mendukung sebagian tipe data, Anda mungkin ingin menggunakan AWS Glue metadata sebagai gantinya.

Untuk mengaktifkan AWS Glue tabel untuk digunakan dengan Amazon DocumentDB, Anda harus memiliki AWS Glue database dan tabel untuk database dan koleksi DocumentDB yang ingin Anda berikan metadata tambahan.

**Untuk menggunakan AWS Glue tabel untuk metadata tambahan**

1. Gunakan AWS Glue konsol untuk membuat AWS Glue database yang memiliki nama yang sama dengan nama database Amazon DocumentDB Anda.

1. Mengatur properti URI database untuk menyertakan **docdb-metadata-flag**.

1. (Opsional) Tambahkan properti tabel **SourceTable**. Properti ini mendefinisikan nama tabel sumber di Amazon DocumentDB. Gunakan properti ini jika AWS Glue tabel Anda memiliki nama yang berbeda dari nama tabel di Amazon DocumentDB. Perbedaan aturan penamaan antara AWS Glue dan Amazon DocumentDB dapat membuat ini diperlukan. Misalnya, huruf kapital tidak diizinkan dalam nama AWS Glue tabel, tetapi mereka diizinkan dalam nama tabel Amazon DocumentDB.

1. (Opsional) Tambahkan properti tabel **ColumnMapping**. Properti ini mendefinisikan pemetaan nama kolom. Gunakan properti ini jika aturan penamaan AWS Glue kolom mencegah Anda membuat AWS Glue tabel yang memiliki nama kolom yang sama dengan yang ada di tabel Amazon DocumentDB Anda. Ini dapat berguna karena huruf kapital diizinkan dalam nama kolom Amazon DocumentDB tetapi tidak diizinkan AWS Glue dalam nama kolom.

   Nilai `columnMapping` properti diharapkan menjadi satu set pemetaan dalam format. `col1=Col1,col2=Col2`
**catatan**  
 Pemetaan kolom hanya berlaku untuk nama kolom tingkat atas dan bukan untuk bidang bersarang. 

   Setelah Anda menambahkan properti AWS Glue `columnMapping` tabel, Anda dapat menghapus variabel lingkungan `disable_projection_and_casing` Lambda.

1. Pastikan Anda menggunakan tipe data yang sesuai untuk AWS Glue yang tercantum dalam dokumen ini.

## Dukungan tipe data
<a name="connectors-docdb-data-type-support"></a>

Bagian ini mencantumkan tipe data yang digunakan konektor DocumentDB untuk inferensi skema, dan tipe data saat metadata digunakan. AWS Glue 

### Jenis data inferensi skema
<a name="connectors-docdb-schema-inference-data-types"></a>

Fitur inferensi skema konektor DocumentDB mencoba menyimpulkan nilai sebagai milik salah satu tipe data berikut. Tabel menunjukkan tipe data yang sesuai untuk Amazon DocumentDB, Java, dan Apache Arrow.


****  

| Panah Apache | Java atau DocDB | 
| --- | --- | 
| VARCHAR | String | 
| INT | Bilangan Bulat | 
| BIGINT | Panjang | 
| BIT | Boolean | 
| FLOAT4 | Desimal | 
| FLOAT8 | Ganda | 
| STEMPEL WAKTU | Date | 
| VARCHAR | ObjectId | 
| DAFTAR | Daftar | 
| STRUCT | Dokumen | 

### AWS Glue tipe data
<a name="connectors-docdb-glue-data-types"></a>

Jika Anda menggunakan AWS Glue metadata tambahan, Anda dapat mengonfigurasi tipe data berikut. Tabel menunjukkan tipe data yang sesuai untuk AWS Glue dan Apache Arrow.


****  

| AWS Glue | Panah Apache | 
| --- | --- | 
| int | INT | 
| bigint | BIGINT | 
| double | FLOAT8 | 
| float | FLOAT4 | 
| boolean | BIT | 
| biner | VARBINARY | 
| string | VARCHAR | 
| Daftar | DAFTAR | 
| Struct | STRUCT | 

## Izin yang Diperlukan
<a name="connectors-docdb-required-permissions"></a>

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian file [athena-docdb.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-docdb/athena-docdb.yaml). Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
+ **AWS Glue Data Catalog**- Konektor DocumentDB membutuhkan akses baca saja ke untuk mendapatkan informasi AWS Glue Data Catalog skema.
+ **CloudWatch Log** — Konektor memerlukan akses ke CloudWatch Log untuk menyimpan log.
+ **AWS Secrets Manager akses baca** - Jika Anda memilih untuk menyimpan detail titik akhir DocumentDB di Secrets Manager, Anda harus memberikan akses konektor ke rahasia tersebut.
+ **Akses VPC** — Konektor memerlukan kemampuan untuk memasang dan melepaskan antarmuka ke VPC Anda sehingga dapat terhubung dengannya dan berkomunikasi dengan instance DocumentDB Anda.

## Performa
<a name="connectors-docdb-performance"></a>

Konektor Athena Amazon DocumentDB saat ini tidak mendukung pemindaian paralel tetapi mencoba untuk menekan predikat sebagai bagian dari kueri DocumentDB-nya, dan predikat terhadap indeks pada koleksi DocumentDB Anda menghasilkan data yang dipindai secara signifikan lebih sedikit.

Fungsi Lambda melakukan pushdown proyeksi untuk mengurangi data yang dipindai oleh kueri. Namun, memilih subset kolom terkadang menghasilkan runtime eksekusi kueri yang lebih lama. `LIMIT`klausa mengurangi jumlah data yang dipindai, tetapi jika Anda tidak memberikan predikat, Anda harus mengharapkan `SELECT` kueri dengan `LIMIT` klausa untuk memindai setidaknya 16 MB data.

## Kueri passthrough
<a name="connectors-docdb-passthrough-queries"></a>

Konektor Athena Amazon DocumentDB mendukung kueri [passthrough](federated-query-passthrough.md) dan berbasis NoSQL. Untuk informasi tentang menanyakan Amazon DocumentDB[,](https://docs.aws.amazon.com/documentdb/latest/developerguide/querying.html) lihat Menanyakan di Panduan *Pengembang Amazon* DocumentDB.

Untuk menggunakan kueri passthrough dengan Amazon DocumentDB, gunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            database => 'database_name',
            collection => 'collection_name',
            filter => '{query_syntax}'
        ))
```

Contoh berikut menanyakan `example` database dalam `TPCDS` koleksi, memfilter semua buku dengan judul *Bill of* Rights.

```
SELECT * FROM TABLE(
        system.query(
            database => 'example',
            collection => 'tpcds',
            filter => '{title: "Bill of Rights"}'
        ))
```

## Sumber daya tambahan
<a name="connectors-docdb-additional-resources"></a>
+ *Untuk artikel tentang penggunaan [Kueri Federasi Amazon Athena untuk menghubungkan database MongoDB ke Quick](federated-queries.md) untuk membangun dasbor dan visualisasi, lihat Memvisualisasikan data [MongoDB dari [Quick](https://aws.amazon.com/quicksight/) menggunakan Kueri Federasi Amazon Athena di Blog Big Data](https://aws.amazon.com/blogs/big-data/visualize-mongodb-data-from-amazon-quicksight-using-amazon-athena-federated-query/).AWS *
+ Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-docdb) GitHub di.com.

# Konektor Amazon Athena DynamoDB
<a name="connectors-dynamodb"></a>

Konektor Amazon Athena DynamoDB memungkinkan Amazon Athena untuk berkomunikasi dengan DynamoDB sehingga Anda dapat mengkueri tabel Anda dengan SQL. Operasi tulis seperti [INSERT INTO](insert-into.md) tidak didukung.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan di harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

## Prasyarat
<a name="connectors-dynamodb-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-dynamodb-limitations"></a>

Jika Anda memigrasikan koneksi DynamoDB Anda ke Glue Catalog dan Lake Formation, hanya tabel huruf kecil dan nama kolom yang akan dikenali. 

## Parameter
<a name="connectors-dynamodb-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor DynamoDB.

### Koneksi Glue (disarankan)
<a name="ddb-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor DynamoDB dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor DynamoDB Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type DYNAMODB
```

**Properti lingkungan Lambda**

**glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor DynamoDB yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor DynamoDB yang dibuat menggunakan koneksi Glue hanya mendukung 2. `ConnectionSchemaVersion`

### Koneksi warisan
<a name="ddb-legacy"></a>

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue 

Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat tanpa koneksi Glue terkait. Gunakan parameter berikut hanya jika Anda [secara manual menerapkan](connect-data-source-serverless-app-repo.md) versi sebelumnya dari konektor sumber data Athena atau ketika `glue_connection` properti lingkungan tidak ditentukan.

**Properti lingkungan Lambda**
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **disable\$1glue** — (Opsional) Jika ada dan disetel ke true, konektor tidak mencoba untuk mengambil metadata tambahan dari. AWS Glue
+ **glue\$1catalog** [- (Opsional) Gunakan opsi ini untuk menentukan katalog lintas akun. AWS Glue](data-sources-glue-cross-account.md) Secara default, konektor mencoba untuk mendapatkan metadata dari akunnya sendiri AWS Glue .
+ **disable\$1projection\$1and\$1casing** - (Opsional) Menonaktifkan proyeksi dan casing. Gunakan jika Anda ingin menanyakan tabel DynamoDB yang memiliki casing di nama kolom mereka dan Anda tidak ingin menentukan properti di `columnMapping` meja Anda. AWS Glue 

  `disable_projection_and_casing`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku pemetaan casing dan kolom:
  + **auto** - Menonaktifkan proyeksi dan casing ketika tipe yang sebelumnya tidak didukung terdeteksi dan pemetaan nama kolom tidak diatur di atas meja. Ini adalah pengaturan default.
  + **selalu** — Menonaktifkan proyeksi dan casing tanpa syarat. Ini berguna ketika Anda memiliki casing di nama kolom DynamoDB Anda tetapi tidak ingin menentukan pemetaan nama kolom apa pun.

  Saat menggunakan `disable_projection_and_casing` parameter, ingatlah poin-poin berikut:
  + Penggunaan parameter dapat menghasilkan penggunaan bandwidth yang lebih tinggi. Selain itu, jika fungsi Lambda Anda tidak sama Wilayah AWS dengan sumber data Anda, Anda akan dikenakan biaya transfer AWS lintas wilayah standar yang lebih tinggi sebagai akibat dari penggunaan bandwidth yang lebih tinggi. Untuk informasi selengkapnya tentang biaya transfer lintas wilayah, lihat [Biaya Transfer AWS Data untuk Arsitektur Server dan Tanpa Server](https://aws.amazon.com/blogs/apn/aws-data-transfer-charges-for-server-and-serverless-architectures/) di Blog Jaringan Mitra. AWS 
  + Karena jumlah byte yang lebih besar ditransfer dan karena jumlah byte yang lebih besar memerlukan waktu deserialisasi yang lebih tinggi, latensi keseluruhan dapat meningkat. 

## Menyiapkan database dan tabel di AWS Glue
<a name="connectors-dynamodb-setting-up-databases-and-tables-in-aws-glue"></a>

Karena kemampuan inferensi skema bawaan konektor terbatas, Anda mungkin ingin menggunakannya AWS Glue untuk metadata. Untuk melakukan ini, Anda harus memiliki database dan tabel di AWS Glue. Untuk mengaktifkannya untuk digunakan dengan DynamoDB, Anda harus mengedit properti mereka.

**Untuk mengedit properti database di AWS Glue konsol**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, perluas **Katalog Data**, lalu pilih **Database**.

   Pada halaman **Database**, Anda dapat mengedit database yang ada, atau memilih **Tambah database** untuk membuatnya.

1. Dalam daftar database, pilih tautan untuk database yang ingin Anda edit.

1. Pilih **Edit**.

1. Pada halaman **Perbarui database**, di bawah **pengaturan Database**, untuk **Lokasi**, tambahkan string**dynamo-db-flag**. Kata kunci ini menunjukkan bahwa database berisi tabel yang digunakan konektor DynamoDB Athena untuk metadata tambahan dan diperlukan untuk database selain. AWS Glue `default` `dynamo-db-flag`Properti ini berguna untuk menyaring database dalam akun dengan banyak database.

1. Pilih **Perbarui Database**.

**Untuk mengedit properti tabel di AWS Glue konsol**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, perluas **Katalog Data**, lalu pilih **Tabel**.

1. Pada halaman **Tabel**, dalam daftar tabel, pilih nama tertaut tabel yang ingin Anda edit.

1. Pilih **Tindakan**, **Edit tabel**.

1. Pada halaman **Edit tabel**, di bagian **properti Tabel**, tambahkan properti tabel berikut sesuai kebutuhan. Jika Anda menggunakan crawler AWS Glue DynamoDB, properti ini diatur secara otomatis.
   + **dynamodb** - String yang menunjukkan ke konektor DynamoDB Athena bahwa tabel dapat digunakan untuk metadata tambahan. Masukkan `dynamodb` string dalam properti tabel di bawah bidang yang disebut **klasifikasi** (sama persis).
**catatan**  
Halaman **Setel properti tabel** yang merupakan bagian dari proses pembuatan tabel di AWS Glue konsol memiliki bagian **Format data** dengan bidang **Klasifikasi**. Anda tidak dapat masuk atau memilih `dynamodb` di sini. Sebagai gantinya, setelah Anda membuat tabel, ikuti langkah-langkah untuk mengedit tabel dan untuk memasukkan `classification` dan `dynamodb` sebagai pasangan kunci-nilai di bagian **Properti tabel**.
   + **SourceTable** - Properti tabel opsional yang mendefinisikan nama tabel sumber di DynamoDB. Gunakan ini jika aturan penamaan AWS Glue tabel mencegah Anda membuat AWS Glue tabel dengan nama yang sama dengan tabel DynamoDB Anda. Misalnya, huruf kapital tidak diizinkan dalam nama AWS Glue tabel, tetapi mereka diizinkan dalam nama tabel DynamoDB.
   + **ColumnMapping** - Properti tabel opsional yang mendefinisikan pemetaan nama kolom. Gunakan ini jika aturan penamaan AWS Glue kolom mencegah Anda membuat AWS Glue tabel dengan nama kolom yang sama dengan tabel DynamoDB Anda. Misalnya, huruf kapital tidak diizinkan dalam nama AWS Glue kolom tetapi diizinkan dalam nama kolom DynamoDB. Nilai properti diharapkan dalam format Col1 = Col1, Col2 = Col2. Perhatikan bahwa pemetaan kolom hanya berlaku untuk nama kolom tingkat atas dan bukan untuk bidang bersarang.
   + **defaultTimeZone**- Properti tabel opsional yang diterapkan ke `date` atau `datetime` nilai yang tidak memiliki zona waktu eksplisit. Menyetel nilai ini adalah praktik yang baik untuk menghindari perbedaan antara zona waktu default sumber data dan zona waktu sesi Athena.
   + **datetimeFormatMapping**- Properti tabel opsional yang menentukan `date` atau `datetime` format yang akan digunakan saat mengurai data dari kolom AWS Glue `date` atau tipe `timestamp` data. Jika properti ini tidak ditentukan, konektor mencoba [menyimpulkan](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateFormatUtils.html) format ISO-8601. Jika konektor tidak dapat menyimpulkan `date` atau `datetime` memformat atau mengurai string mentah, maka nilainya dihilangkan dari hasilnya. 

     `datetimeFormatMapping`Nilainya harus dalam format`col1=someformat1,col2=someformat2`. Berikut adalah beberapa contoh format:

     ```
     yyyyMMdd'T'HHmmss 
     ddMMyyyy'T'HH:mm:ss
     ```

     Jika kolom Anda memiliki `date` atau `datetime` nilai tanpa zona waktu dan Anda ingin menggunakan kolom dalam `WHERE` klausa, atur `datetimeFormatMapping` properti untuk kolom tersebut.

1. Jika Anda menentukan kolom secara manual, pastikan Anda menggunakan tipe data yang sesuai. Jika Anda menggunakan crawler, validasi kolom dan jenis yang ditemukan crawler.

1. Pilih **Simpan**.

## Izin yang Diperlukan
<a name="connectors-dynamodb-required-permissions"></a>

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian file [athena-dynamodb.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-dynamodb/athena-dynamodb.yaml). Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
+ **AWS Glue Data Catalog**- Konektor DynamoDB memerlukan akses baca saja ke untuk mendapatkan informasi AWS Glue Data Catalog skema.
+ **CloudWatch Log** — Konektor memerlukan akses ke CloudWatch Log untuk menyimpan log.
+ Akses **baca DynamoDB** — Konektor menggunakan `DescribeTable` operasi`ListSchemas`,,, `ListTables``Query`, `Scan` dan API.

## Performa
<a name="connectors-dynamodb-performance"></a>

Konektor DynamoDB Athena mendukung pemindaian paralel dan mencoba menekan predikat sebagai bagian dari kueri DynamoDB. Predikat kunci hash dengan nilai `X` yang berbeda menghasilkan panggilan `X` kueri ke DynamoDB. Semua skenario predikat lainnya menghasilkan `Y` jumlah panggilan pemindaian, di mana `Y` ditentukan secara heuristik berdasarkan ukuran tabel Anda dan throughput yang disediakan. Namun, memilih subset kolom terkadang menghasilkan runtime eksekusi kueri yang lebih lama.

`LIMIT`klausa dan predikat sederhana ditekan ke bawah dan dapat mengurangi jumlah data yang dipindai dan akan menyebabkan penurunan waktu eksekusi kueri. 

### Klausul LIMIT
<a name="connectors-dynamodb-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Predikat
<a name="connectors-dynamodb-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Untuk meningkatkan fungsionalitas, dan untuk mengurangi jumlah data yang dipindai, konektor DynamoDB Athena dapat menggabungkan ekspresi ini dan mendorongnya langsung ke DynamoDB.

Operator konektor DynamoDB Athena berikut mendukung pushdown predikat:
+ **Boolean:** DAN
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1NULL

### Contoh pushdown gabungan
<a name="connectors-dynamodb-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT *
FROM my_table
WHERE col_a > 10 and col_b < 10
LIMIT 10
```

*Untuk artikel tentang penggunaan pushdown predikat untuk meningkatkan kinerja dalam kueri federasi, termasuk DynamoDB, [lihat Meningkatkan kueri federasi dengan pushdown predikat di Amazon](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) Athena di Blog Big Data.AWS *

## Kueri passthrough
<a name="connectors-dynamodb-passthrough-queries"></a>

Konektor DynamoDB [mendukung kueri passthrough](federated-query-passthrough.md) dan menggunakan sintaks PartiQL. Operasi [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)DynamoDB API tidak didukung. *Untuk informasi tentang menanyakan DynamoDB menggunakan PartiQL, [lihat pernyataan pilih PartiQL untuk DynamoDB di Panduan Pengembang Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.select.html).*

Untuk menggunakan kueri passthrough dengan DynamoDB, gunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query_string'
        ))
```

Contoh kueri passthrough DynamoDB berikut menggunakan PartiQL untuk mengembalikan daftar perangkat Fire TV Stick yang memiliki properti selambat-lambatnya 12/24/22. `DateWatched`

```
SELECT * FROM TABLE(
        system.query(
           query => 'SELECT Devices 
                       FROM WatchList 
                       WHERE Devices.FireStick.DateWatched[0] > '12/24/22''
        ))
```

## Pemecahan masalah
<a name="connectors-dynamodb-troubleshooting"></a>

### Beberapa filter pada kolom kunci sortir
<a name="connectors-dynamodb-troubleshooting-sort-key-filters"></a>

**Pesan kesalahan**: hanya KeyConditionExpressions boleh berisi satu kondisi per kunci

**Penyebab**: Masalah ini dapat terjadi di mesin Athena versi 3 dalam kueri yang memiliki filter batas bawah dan atas pada kolom kunci sortir DynamoDB. Karena DynamoDB tidak mendukung lebih dari satu kondisi filter pada kunci pengurutan, kesalahan muncul ketika konektor mencoba menekan kueri yang kedua kondisi diterapkan.

**Solusi**: Perbarui konektor ke versi 2023.11.1 atau yang lebih baru. Untuk petunjuk tentang memperbarui konektor, lihat[Perbarui konektor sumber data](connectors-updating.md).

## Biaya
<a name="connectors-dynamodb-costs"></a>

Biaya untuk penggunaan konektor tergantung pada AWS sumber daya yang mendasari yang digunakan. Karena kueri yang menggunakan pemindaian dapat menggunakan sejumlah besar [unit kapasitas baca (RCUs)](https://aws.amazon.com/dynamodb/pricing/provisioned/), pertimbangkan informasi untuk [harga Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/) dengan cermat.

## Sumber daya tambahan
<a name="connectors-dynamodb-additional-resources"></a>
+ *Untuk pengenalan penggunaan konektor DynamoDB Amazon Athena, lihat [Akses, kueri, dan bergabung dengan tabel Amazon DynamoDB menggunakan Athena dalam panduan Pola Panduan Preskriptif](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html).AWS * 
+ [Untuk artikel tentang cara menggunakan konektor Athena DynamoDB untuk menanyakan data di DynamoDB dengan SQL dan memvisualisasikan wawasan di Quick, lihat *AWS posting Blog Big Data Visualisasikan wawasan Amazon DynamoDB dengan Cepat menggunakan konektor Amazon Athena DynamoDB* dan. AWS Glue](https://aws.amazon.com/blogs/big-data/visualize-amazon-dynamodb-insights-in-amazon-quicksight-using-the-amazon-athena-dynamodb-connector-and-aws-glue/) 
+ [Untuk artikel tentang penggunaan konektor Amazon Athena DynamoDB dengan Amazon DynamoDB, Athena, dan Quick untuk membuat dasbor tata kelola sederhana, lihat tabel Amazon DynamoDB *lintas akun Big Data Blog AWS Post Query menggunakan Amazon Athena Federated Query*.](https://aws.amazon.com/blogs/big-data/query-cross-account-amazon-dynamodb-tables-using-amazon-athena-federated-query/)
+ Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) GitHub di.com.

# Konektor Google Amazon Athena BigQuery
<a name="connectors-bigquery"></a>

Konektor Amazon Athena untuk Google [BigQuery](https://cloud.google.com/bigquery/)memungkinkan Amazon Athena menjalankan kueri SQL pada data Google Anda. BigQuery

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-bigquery-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-bigquery-limitations"></a>
+ Fungsi Lambda memiliki nilai batas waktu maksimum 15 menit. Setiap perpecahan mengeksekusi kueri BigQuery dan harus selesai dengan waktu yang cukup untuk menyimpan hasil agar Athena dapat dibaca. Jika fungsi Lambda habis waktu, kueri gagal.
+ Google BigQuery adalah case sensitive. Konektor mencoba untuk memperbaiki kasus nama dataset, nama tabel, dan proyek IDs. Ini diperlukan karena Athena menurunkan semua metadata. Koreksi ini membuat banyak panggilan tambahan ke Google BigQuery.
+ Tipe data biner tidak didukung.
+ Karena BigQuery konkurensi Google dan batas kuota, konektor mungkin mengalami masalah batas kuota Google. Untuk menghindari masalah ini, dorong sebanyak mungkin kendala ke Google BigQuery . Untuk informasi tentang BigQuery kuota, lihat [Kuota dan batasan](https://cloud.google.com/bigquery/quotas) dalam dokumentasi Google BigQuery .

## Parameter
<a name="connectors-bigquery-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi BigQuery konektor Google.

### Koneksi lem (disarankan)
<a name="bigquery-gc"></a>

Kami menyarankan Anda mengonfigurasi BigQuery konektor Google dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari BigQuery konektor Google Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type BIGQUERY
```

**Properti lingkungan Lambda**

**glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
 BigQuery Konektor Google yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
 BigQuery Konektor Google yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="bigquery-legacy"></a>

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue 

Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat tanpa koneksi Glue terkait. Gunakan parameter berikut hanya jika Anda [menggunakan versi sebelumnya dari konektor sumber data Athena secara manual](connect-data-source-serverless-app-repo.md) atau saat `glue_connection` properti lingkungan tidak ditentukan.

**Properti lingkungan Lambda**
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **gcp\$1project\$1id — ID** proyek (bukan nama proyek) yang berisi kumpulan data yang harus dibaca konektor (misalnya,). `semiotic-primer-1234567`
+ **secret\$1manager\$1gcp\$1creds\$1name — Nama rahasia di dalamnya yang berisi kredensil** Anda dalam AWS Secrets Manager format JSON (misalnya,). BigQuery `GoogleCloudPlatformCredentials`
+ **big\$1query\$1endpoint** — (Opsional) URL dari endpoint pribadi. BigQuery Gunakan parameter ini saat Anda ingin mengakses BigQuery melalui titik akhir pribadi.

## Perpecahan dan tampilan
<a name="connectors-bigquery-splits-and-views"></a>

Karena BigQuery konektor menggunakan BigQuery Storage Read API untuk menanyakan tabel, dan BigQuery Storage API tidak mendukung tampilan, konektor menggunakan BigQuery klien dengan satu split untuk tampilan.

## Performa
<a name="connectors-bigquery-performance"></a>

Untuk menanyakan tabel, BigQuery konektor menggunakan BigQuery Storage Read API, yang menggunakan protokol berbasis RPC yang menyediakan akses cepat ke penyimpanan BigQuery terkelola. Untuk informasi selengkapnya tentang BigQuery Storage Read API, lihat [Menggunakan BigQuery Storage Read API untuk membaca data tabel](https://cloud.google.com/bigquery/docs/reference/storage) di dokumentasi Google Cloud.

Memilih subset kolom secara signifikan mempercepat runtime kueri dan mengurangi data yang dipindai. Konektor tunduk pada kegagalan kueri saat konkurensi meningkat, dan umumnya merupakan konektor yang lambat.

 BigQuery Konektor Google Athena melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa, `ORDER BY` klausa, predikat sederhana, dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri. 

### Klausul LIMIT
<a name="connectors-bigquery-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Kueri N teratas
<a name="connectors-bigquery-performance-top-n-queries"></a>

`N`Kueri teratas menentukan urutan set hasil dan batas jumlah baris yang dikembalikan. Anda dapat menggunakan jenis kueri ini untuk menentukan nilai `N` maks teratas atau nilai `N` min teratas untuk kumpulan data Anda. Dengan `N` pushdown atas, konektor hanya mengembalikan baris yang `N` dipesan ke Athena.

### Predikat
<a name="connectors-bigquery-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa query SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. BigQuery Konektor Google Athena dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Google BigQuery untuk fungsionalitas yang ditingkatkan dan untuk mengurangi jumlah data yang dipindai.

Operator BigQuery konektor Google Athena berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-bigquery-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
ORDER BY col_a DESC 
LIMIT 10;
```

## Kueri passthrough
<a name="connectors-bigquery-passthrough-queries"></a>

 BigQuery Konektor Google mendukung [kueri passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Google BigQuery, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh kueri berikut mendorong kueri ke sumber data di Google BigQuery. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-bigquery-license-information"></a>

Proyek BigQuery konektor Google Amazon Athena dilisensikan di bawah Lisensi [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-bigquery-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-google-bigquery) GitHub di.com.

# Konektor Penyimpanan Awan Google Amazon Athena
<a name="connectors-gcs"></a>

Konektor Amazon Athena Google Cloud Storage memungkinkan Amazon Athena menjalankan kueri pada file Parket dan CSV yang disimpan dalam bucket Google Cloud Storage (GCS). Setelah mengelompokkan satu atau beberapa file Parket atau CSV dalam folder yang tidak dipartisi atau dipartisi dalam bucket GCS, Anda dapat mengaturnya dalam tabel database. [AWS Glue](https://aws.amazon.com/glue/)

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

Untuk artikel yang menunjukkan cara menggunakan Athena untuk menjalankan kueri pada file Parket atau CSV di bucket GCS, lihat posting Blog AWS Big Data Menggunakan [Amazon Athena untuk](https://aws.amazon.com/blogs/big-data/use-amazon-athena-to-query-data-stored-in-google-cloud-platform/) menanyakan data yang disimpan di Google Cloud Platform.

## Prasyarat
<a name="connectors-gcs-prerequisites"></a>
+ Siapkan AWS Glue database dan tabel yang sesuai dengan bucket dan folder Anda di Google Cloud Storage. Untuk langkah-langkahnya, lihat [Menyiapkan database dan tabel di AWS Glue](#connectors-gcs-setting-up-databases-and-tables-in-glue) nanti di dokumen ini.
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-gcs-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Saat ini, konektor hanya mendukung `VARCHAR` jenis untuk kolom partisi (`string`atau `varchar` dalam skema AWS Glue tabel). Jenis bidang partisi lainnya memunculkan kesalahan saat Anda menanyakannya di Athena.

## Ketentuan
<a name="connectors-gcs-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor GCS.
+ **Handler — Penangan** Lambda yang mengakses bucket GCS Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari bucket GCS Anda.
+ **Record handler — Penangan** Lambda yang mengambil catatan data dari bucket GCS Anda.
+ **Handler komposit — Penangan** Lambda yang mengambil data metadata dan data dari bucket GCS Anda.

## Tipe file yang didukung
<a name="connectors-gcs-supported-file-types"></a>

Konektor GCS mendukung jenis file Parket dan CSV.

**catatan**  
Pastikan Anda tidak menempatkan file CSV dan Parket di bucket atau path GCS yang sama. Melakukannya dapat mengakibatkan kesalahan runtime ketika file Parket dicoba dibaca sebagai CSV atau sebaliknya. 

## Parameter
<a name="connectors-gcs-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor GCS.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi Glue (disarankan)
<a name="connectors-gcs-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor GCS dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor GCS Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type GOOGLECLOUDSTORAGE
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor GCS yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor GCS yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-gcs-legacy"></a>
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **secret\$1manager\$1gcp\$1creds\$1name — Nama rahasia yang berisi kredensi** GCS Anda dalam AWS Secrets Manager format JSON (misalnya,). `GoogleCloudPlatformCredentials`

## Menyiapkan database dan tabel di AWS Glue
<a name="connectors-gcs-setting-up-databases-and-tables-in-glue"></a>

Karena kemampuan inferensi skema bawaan dari konektor GCS terbatas, kami sarankan Anda menggunakannya AWS Glue untuk metadata Anda. Prosedur berikut menunjukkan cara membuat database dan tabel di mana Anda AWS Glue dapat mengakses dari Athena.

### Membuat database di AWS Glue
<a name="connectors-gcs-creating-a-database-in-glue"></a>

Anda dapat menggunakan AWS Glue konsol untuk membuat database untuk digunakan dengan konektor GCS.

**Untuk membuat database di AWS Glue**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Dari panel navigasi, pilih **Databases**.

1. Pilih **Add database** (Tambahkan basis data).

1. Untuk **Nama**, masukkan nama untuk database yang ingin Anda gunakan dengan konektor GCS.

1. Untuk **Lokasi**, tentukan`google-cloud-storage-flag`. Lokasi ini memberi tahu konektor GCS bahwa AWS Glue database berisi tabel untuk data GCS yang akan ditanyakan di Athena. Konektor mengenali database di Athena yang memiliki bendera ini dan mengabaikan database yang tidak.

1. Pilih **Buat basis data**.

### Membuat tabel di AWS Glue
<a name="connectors-gcs-creating-a-table-in-glue"></a>

Sekarang Anda dapat membuat tabel untuk database. Saat Anda membuat AWS Glue tabel untuk digunakan dengan konektor GCS, Anda harus menentukan metadata tambahan.

**Untuk membuat tabel di AWS Glue konsol**

1. Di AWS Glue konsol, dari panel navigasi, pilih **Tabel**.

1. Pada halaman **Tabel**, pilih **Tambahkan tabel**.

1. Pada halaman **Set table properties**, masukkan informasi berikut.
   + **Nama** — Nama unik untuk tabel.
   + **Database** — Pilih AWS Glue database yang Anda buat untuk konektor GCS.
   + **Sertakan jalur** — Di bagian **Penyimpanan data**, untuk **jalur Sertakan**, masukkan lokasi URI untuk GCS yang diawali oleh `gs://` (misalnya,`gs://gcs_table/data/`). Jika Anda memiliki satu atau lebih folder partisi, jangan sertakan mereka di jalur.
**catatan**  
Saat Anda memasukkan jalur non `s3://` tabel, AWS Glue konsol menunjukkan kesalahan. Anda dapat mengabaikan kesalahan ini. Tabel akan berhasil dibuat.
   + **Format data** — Untuk **Klasifikasi**, pilih **CSV** atau **Parket**.

1. Pilih **Berikutnya**.

1. Pada halaman **Pilih atau tentukan skema**, mendefinisikan skema tabel sangat disarankan, tetapi tidak wajib. Jika Anda tidak mendefinisikan skema, konektor GCS mencoba menyimpulkan skema untuk Anda.

   Lakukan salah satu tindakan berikut:
   + **Jika Anda ingin konektor GCS mencoba menyimpulkan skema untuk Anda, pilih **Berikutnya**, lalu pilih Buat.**
   + Untuk menentukan skema sendiri, ikuti langkah-langkah di bagian selanjutnya.

### Mendefinisikan skema tabel di AWS Glue
<a name="connectors-gcs-defining-a-table-schema-in-glue"></a>

Mendefinisikan skema tabel AWS Glue membutuhkan lebih banyak langkah tetapi memberi Anda kontrol yang lebih besar atas proses pembuatan tabel.

**Untuk menentukan skema untuk tabel Anda di AWS Glue**

1. Pada halaman **Pilih atau tentukan skema**, pilih **Tambah**.

1. Gunakan kotak dialog **Tambahkan entri skema** untuk memberikan nama kolom dan tipe data.

1. Untuk menunjuk kolom sebagai kolom partisi, pilih opsi **Set as partition key**.

1. Pilih **Simpan** untuk menyimpan kolom.

1. Pilih **Tambah** untuk menambahkan kolom lain.

1. Setelah selesai menambahkan kolom, pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, tinjau tabel, lalu pilih **Buat**.

1. Jika skema Anda berisi informasi partisi, ikuti langkah-langkah di bagian berikutnya untuk menambahkan pola partisi ke properti tabel di AWS Glue.

### Menambahkan pola partisi ke properti tabel di AWS Glue
<a name="connectors-gcs-adding-a-partition-pattern-to-table-properties-in-glue"></a>

Jika bucket GCS Anda memiliki partisi, Anda harus menambahkan pola partisi ke properti tabel di. AWS Glue

**Untuk menambahkan informasi partisi ke properti tabel AWS Glue**

1. Pada halaman detail untuk tabel yang Anda buat AWS Glue, pilih **Tindakan**, **Edit tabel**.

1. Pada halaman **Edit tabel**, gulir ke bawah ke bagian **Properti tabel**.

1. Pilih **Tambah** untuk menambahkan kunci partisi.

1. Untuk **Kunci**, masukkan **partition.pattern**. Kunci ini mendefinisikan pola path folder.

1. Untuk **Nilai**, masukkan pola jalur folder seperti**StateName=\$1\$1statename\$1/ZipCode=\$1\$1zipcode\$1/**, di mana **statename** dan **zipcode** tertutup oleh **\$1\$1\$1** adalah nama kolom partisi. Konektor GCS mendukung skema partisi Hive dan non-Hive.

1. Setelah selesai, pilih **Simpan**.

1. Untuk melihat properti tabel yang baru saja Anda buat, pilih tab **Advanced properties**.

Pada titik ini, Anda dapat menavigasi ke konsol Athena. Database dan tabel yang Anda buat AWS Glue tersedia untuk kueri di Athena.

## Dukungan tipe data
<a name="connectors-gcs-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang didukung untuk CSV dan untuk Parket.

### CSV
<a name="connectors-gcs-csv"></a>


****  

| **Sifat data** | **Tipe Data yang Disimpulkan** | 
| --- | --- | 
| Data terlihat seperti angka | BIGINT | 
| Data terlihat seperti string | VARCHAR | 
| Data terlihat seperti floating point (float, double, atau desimal) | DOUBLE | 
| Data terlihat seperti Tanggal | Stempel waktu | 
| Data yang berisi true/false nilai | BOOL | 

### Parquet
<a name="connectors-gcs-parquet"></a>


****  

| **PARKET** | **Athena (Panah)** | 
| --- | --- | 
| BINARY | VARCHAR | 
| BOOLEAN | BOOL | 
| DOUBLE | DOUBLE | 
| ENUM | VARCHAR | 
| FIXED\$1LEN\$1BYTE\$1ARRAY | DECIMAL | 
| FLOAT | FLOAT (32-bit) | 
| INT32 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/connectors-gcs.html)  | 
| INT64 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/connectors-gcs.html)  | 
| INT96 | Stempel waktu | 
| PETA | PETA | 
| STRUCT | STRUCT | 
| DAFTAR | DAFTAR | 

## Izin yang Diperlukan
<a name="connectors-gcs-required-permissions"></a>

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian file [athena-gcs.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-gcs/athena-gcs.yaml). Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
+ **AWS Glue Data Catalog**- Konektor GCS memerlukan akses baca saja ke AWS Glue Data Catalog untuk mendapatkan informasi skema.
+ **CloudWatch Log** — Konektor memerlukan akses ke CloudWatch Log untuk menyimpan log.

## Performa
<a name="connectors-gcs-performance"></a>

Ketika skema tabel berisi bidang partisi dan properti `partition.pattern` tabel dikonfigurasi dengan benar, Anda dapat menyertakan bidang partisi dalam `WHERE` klausa kueri Anda. Untuk kueri semacam itu, konektor GCS menggunakan kolom partisi untuk memperbaiki jalur folder GCS dan menghindari pemindaian file yang tidak dibutuhkan di folder GCS.

Untuk kumpulan data Parket, memilih subset kolom menghasilkan lebih sedikit data yang dipindai. Ini biasanya menghasilkan runtime eksekusi kueri yang lebih pendek ketika proyeksi kolom diterapkan. 

Untuk kumpulan data CSV, proyeksi kolom tidak didukung dan tidak mengurangi jumlah data yang dipindai. 

`LIMIT`klausa mengurangi jumlah data yang dipindai, tetapi jika Anda tidak memberikan predikat, Anda harus mengharapkan `SELECT` kueri dengan `LIMIT` klausa untuk memindai setidaknya 16 MB data. Konektor GCS memindai lebih banyak data untuk kumpulan data yang lebih besar daripada kumpulan data yang lebih kecil, terlepas dari klausa yang diterapkan. `LIMIT` Misalnya, kueri `SELECT * LIMIT 10000` memindai lebih banyak data untuk kumpulan data dasar yang lebih besar daripada yang lebih kecil.

### Informasi lisensi
<a name="connectors-gcs-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-gcs/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-gcs/LICENSE.txt) di .com. GitHub

### Sumber daya tambahan
<a name="connectors-gcs-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-gcs) GitHub di.com.

# Konektor Amazon Athena HBase
<a name="connectors-hbase"></a>

 HBase Konektor Amazon Athena memungkinkan Amazon Athena berkomunikasi dengan instans HBase Apache Anda sehingga Anda dapat menanyakan data Anda dengan SQL. HBase 

Tidak seperti penyimpanan data relasional tradisional, HBase koleksi tidak memiliki skema yang ditetapkan. HBasetidak memiliki toko metadata. Setiap entri dalam HBase koleksi dapat memiliki bidang dan tipe data yang berbeda.

 HBase Konektor mendukung dua mekanisme untuk menghasilkan informasi skema tabel: inferensi skema dasar dan metadata. AWS Glue Data Catalog 

Inferensi skema adalah default. Opsi ini memindai sejumlah kecil dokumen dalam koleksi Anda, membentuk gabungan semua bidang, dan memaksa bidang yang memiliki tipe data yang tidak tumpang tindih. Opsi ini berfungsi dengan baik untuk koleksi yang sebagian besar memiliki entri seragam.

Untuk koleksi dengan variasi tipe data yang lebih besar, konektor mendukung pengambilan metadata dari file. AWS Glue Data Catalog Jika konektor melihat AWS Glue database dan tabel yang cocok dengan HBase namespace dan nama koleksi Anda, ia mendapatkan informasi skema dari tabel yang sesuai. AWS Glue Saat Anda membuat AWS Glue tabel, kami sarankan Anda menjadikannya superset dari semua bidang yang mungkin ingin Anda akses dari HBase koleksi Anda.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan di harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-hbase-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Parameter
<a name="connectors-hbase-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi HBase konektor.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi lem (disarankan)
<a name="connectors-hbase-gc"></a>

Kami menyarankan Anda mengkonfigurasi HBase konektor dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan HBase konektor Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type HBASE
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
 HBase Konektor yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
 HBase Konektor yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-hbase-legacy"></a>
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **disable\$1glue** — (Opsional) Jika ada dan disetel ke true, konektor tidak mencoba untuk mengambil metadata tambahan dari. AWS Glue
+ **glue\$1catalog** [- (Opsional) Gunakan opsi ini untuk menentukan katalog lintas akun. AWS Glue](data-sources-glue-cross-account.md) Secara default, konektor mencoba mendapatkan metadata dari akunnya sendiri AWS Glue .
+ **default\$1hbase** - Jika ada, menentukan string HBase koneksi untuk digunakan ketika tidak ada variabel lingkungan khusus katalog.
+ **enable\$1case\$1insensitive\$1match** — (Opsional) Saat`true`, melakukan pencarian yang tidak peka huruf besar/kecil terhadap nama tabel di. HBase Nilai default-nya `false`. Gunakan jika kueri Anda berisi nama tabel huruf besar.

#### Menentukan string koneksi
<a name="connectors-hbase-specifying-connection-strings"></a>

Anda dapat memberikan satu atau beberapa properti yang menentukan detail HBase koneksi untuk HBase instance yang Anda gunakan dengan konektor. Untuk melakukan ini, tetapkan variabel lingkungan Lambda yang sesuai dengan nama katalog yang ingin Anda gunakan di Athena. Misalnya, Anda ingin menggunakan kueri berikut untuk menanyakan dua HBase contoh berbeda dari Athena:

```
SELECT * FROM "hbase_instance_1".database.table
```

```
SELECT * FROM "hbase_instance_2".database.table
```

Sebelum Anda dapat menggunakan dua pernyataan SQL ini, Anda harus menambahkan dua variabel lingkungan ke fungsi `hbase_instance_1` Lambda Anda: dan. `hbase_instance_2` Nilai untuk masing-masing harus berupa string HBase koneksi dalam format berikut:

```
master_hostname:hbase_port:zookeeper_port
```

##### Menggunakan rahasia
<a name="connectors-hbase-using-secrets"></a>

Anda dapat secara opsional menggunakan AWS Secrets Manager sebagian atau seluruh nilai untuk detail string koneksi Anda. [Untuk menggunakan fitur Kueri Federasi Athena dengan Secrets Manager, VPC yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

Jika Anda menggunakan sintaks `${my_secret}` untuk memasukkan nama rahasia dari Secrets Manager di string koneksi Anda, konektor menggantikan nama rahasia dengan nama pengguna dan nilai kata sandi Anda dari Secrets Manager.

Misalnya, Anda menyetel variabel lingkungan Lambda `hbase_instance_1` ke nilai berikut:

```
${hbase_host_1}:${hbase_master_port_1}:${hbase_zookeeper_port_1}
```

Athena Query Federation SDK secara otomatis mencoba untuk mengambil rahasia bernama dari Secrets `hbase_instance_1_creds` Manager dan menyuntikkan nilai tersebut sebagai pengganti. `${hbase_instance_1_creds}` Setiap bagian dari string koneksi yang dilampirkan oleh kombinasi `${ }` karakter ditafsirkan sebagai rahasia dari Secrets Manager. Jika Anda menentukan nama rahasia yang tidak dapat ditemukan konektor di Secrets Manager, konektor tidak menggantikan teks.

## Menyiapkan database dan tabel di AWS Glue
<a name="connectors-hbase-setting-up-databases-and-tables-in-aws-glue"></a>

Inferensi skema bawaan konektor hanya mendukung nilai yang diserialkan HBase sebagai string (misalnya,). `String.valueOf(int)` Karena kemampuan inferensi skema bawaan konektor terbatas, Anda mungkin ingin menggunakannya AWS Glue untuk metadata sebagai gantinya. Untuk mengaktifkan AWS Glue tabel untuk digunakan HBase, Anda harus memiliki AWS Glue database dan tabel dengan nama yang cocok dengan HBase namespace dan tabel yang ingin Anda berikan metadata tambahan untuk. Penggunaan konvensi penamaan keluarga HBase kolom adalah opsional tetapi tidak diperlukan.

**Untuk menggunakan AWS Glue tabel untuk metadata tambahan**

1. Saat Anda mengedit tabel dan database di AWS Glue konsol, tambahkan properti tabel berikut:
   + **hbase-metadata-flag**— Properti ini menunjukkan pada HBase konektor bahwa konektor dapat menggunakan tabel untuk metadata tambahan. Anda dapat memberikan nilai apa pun `hbase-metadata-flag` selama `hbase-metadata-flag` properti hadir dalam daftar properti tabel.
   + **hbase-native-storage-flag**— Gunakan tanda ini untuk mengaktifkan dua mode serialisasi nilai yang didukung oleh konektor. Secara default, ketika bidang ini tidak ada, konektor mengasumsikan semua nilai disimpan HBase sebagai string. Dengan demikian ia akan mencoba untuk mengurai tipe data seperti`INT`,`BIGINT`, dan `DOUBLE` dari HBase sebagai string. Jika bidang ini diatur dengan nilai apa pun pada tabel AWS Glue, konektor beralih ke mode penyimpanan “asli” dan mencoba membaca`INT`,`BIGINT`,`BIT`, dan `DOUBLE` sebagai byte dengan menggunakan fungsi berikut:

     ```
     ByteBuffer.wrap(value).getInt() 
     ByteBuffer.wrap(value).getLong() 
     ByteBuffer.wrap(value).get() 
     ByteBuffer.wrap(value).getDouble()
     ```

1. Pastikan Anda menggunakan tipe data yang sesuai AWS Glue seperti yang tercantum dalam dokumen ini.

### Pemodelan keluarga kolom
<a name="connectors-hbase-modeling-column-families"></a>

 HBase Konektor Athena mendukung dua cara untuk memodelkan keluarga HBase kolom: penamaan yang memenuhi syarat (diratakan) seperti`family:column`, atau menggunakan objek. `STRUCT`

Dalam `STRUCT` model, nama `STRUCT` bidang harus sesuai dengan keluarga kolom, dan anak-anak `STRUCT` harus cocok dengan nama kolom keluarga. Namun, karena predikat push down dan pembacaan kolom belum sepenuhnya didukung untuk tipe kompleks seperti`STRUCT`, penggunaan saat ini tidak `STRUCT` disarankan.

Gambar berikut menunjukkan tabel dikonfigurasi AWS Glue yang menggunakan kombinasi dari dua pendekatan.

![\[Pemodelan keluarga kolom AWS Glue untuk Apache Hbase.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-hbase-1.png)


## Dukungan tipe data
<a name="connectors-hbase-data-type-support"></a>

Konektor mengambil semua HBase nilai sebagai tipe byte dasar. Kemudian, berdasarkan bagaimana Anda mendefinisikan tabel Anda di Katalog AWS Glue Data, itu memetakan nilai ke salah satu tipe data Apache Arrow dalam tabel berikut.


****  

| AWS Glue tipe data | Tipe data Apache Arrow | 
| --- | --- | 
| int | INT | 
| bigint | BIGINT | 
| double | FLOAT8 | 
| float | FLOAT4 | 
| boolean | BIT | 
| biner | VARBINARY | 
| string | VARCHAR | 

**catatan**  
Jika Anda tidak menggunakan AWS Glue untuk melengkapi metadata Anda, inferensi skema konektor hanya menggunakan tipe `BIGINT` data,, dan. `FLOAT8` `VARCHAR`

## Izin yang Diperlukan
<a name="connectors-hbase-required-permissions"></a>

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian file [athena-hbase.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hbase/athena-hbase.yaml). Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
+ **AWS Glue Data Catalog**— HBase Konektor hanya membutuhkan akses baca ke AWS Glue Data Catalog untuk mendapatkan informasi skema.
+ **CloudWatch Log** — Konektor memerlukan akses ke CloudWatch Log untuk menyimpan log.
+ **AWS Secrets Manager akses baca** - Jika Anda memilih untuk menyimpan detail HBase titik akhir di Secrets Manager, Anda harus memberikan akses konektor ke rahasia tersebut.
+ **Akses VPC** — Konektor memerlukan kemampuan untuk memasang dan melepaskan antarmuka ke VPC Anda sehingga dapat terhubung dengannya dan berkomunikasi dengan instans Anda. HBase 

## Performa
<a name="connectors-hbase-performance"></a>

 HBase Konektor Athena mencoba memparalelkan kueri terhadap HBase instans Anda dengan membaca setiap server wilayah secara paralel. HBase Konektor Athena melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri.

Fungsi Lambda juga melakukan pushdown *proyeksi* untuk mengurangi data yang dipindai oleh kueri. Namun, memilih subset kolom terkadang menghasilkan runtime eksekusi kueri yang lebih lama. `LIMIT`klausa mengurangi jumlah data yang dipindai, tetapi jika Anda tidak memberikan predikat, Anda harus mengharapkan `SELECT` kueri dengan `LIMIT` klausa untuk memindai setidaknya 16 MB data.

HBase rentan terhadap kegagalan kueri dan waktu eksekusi kueri variabel. Anda mungkin harus mencoba lagi pertanyaan Anda beberapa kali agar berhasil. HBase Konektor tahan terhadap pelambatan karena konkurensi.

## Kueri passthrough
<a name="connectors-hbase-passthrough-queries"></a>

 HBase Konektor mendukung [kueri passthrough dan berbasis](federated-query-passthrough.md) NoSQL. Untuk informasi tentang kueri Apache HBase menggunakan pemfilteran, lihat [Menyaring bahasa dalam dokumentasi](https://hbase.apache.org/book.html#thrift.filter_language) Apache.

Untuk menggunakan kueri passthrough dengan HBase, gunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            database => 'database_name',
            collection => 'collection_name',
            filter => '{query_syntax}'
        ))
```

Berikut contoh filter kueri HBase passthrough untuk karyawan berusia 24 atau 30 dalam `employee` koleksi `default` database.

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'default',
            COLLECTION => 'employee',
            FILTER => 'SingleColumnValueFilter(''personaldata'', ''age'', =, ''binary:30'')' ||
                       ' OR SingleColumnValueFilter(''personaldata'', ''age'', =, ''binary:24'')'
        ))
```

## Informasi lisensi
<a name="connectors-hbase-license-information"></a>

Proyek HBase konektor Amazon Athena dilisensikan di bawah Lisensi [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Sumber daya tambahan
<a name="connectors-hbase-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-hbase) GitHub di.com.

# Konektor Amazon Athena Hortonworks
<a name="connectors-hortonworks"></a>

[Konektor Amazon Athena untuk Hortonworks memungkinkan Amazon Athena menjalankan kueri SQL pada platform data Cloudera Hortonworks.](https://www.cloudera.com/products/hdp.html) Konektor mengubah kueri Athena SQL Anda menjadi sintaks HiveQL yang setara.

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

## Prasyarat
<a name="connectors-hive-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-hortonworks-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.

## Ketentuan
<a name="connectors-hortonworks-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Hortonworks Hive.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-hortonworks-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Hortonworks Hive.

### String koneksi
<a name="connectors-hortonworks-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
hive://${jdbc_connection_string}
```

### Menggunakan handler multiplexing
<a name="connectors-hortonworks-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | HiveMuxCompositeHandler | 
| Penangan metadata | HiveMuxMetadataHandler | 
| Rekam handler | HiveMuxRecordHandler | 

#### Parameter handler multiplexing
<a name="connectors-hortonworks-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmyhivecatalog, maka nama variabel lingkungan adalah. myhivecatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan ketika katalog lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Hive MUX Lambda yang mendukung dua instance database: `hive1` (default), dan. `hive2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1:10000/default?\$1\$1Test/RDS/hive1\$1 | 
| hive\$1catalog1\$1connection\$1string | hive://jdbc:hive2://hive1:10000/default?\$1\$1Test/RDS/hive1\$1 | 
| hive\$1catalog2\$1connection\$1string | hive://jdbc:hive2://hive2:10000/default?UID=sample&PWD=sample | 

#### Memberikan kredensi
<a name="connectors-hortonworks-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${Test/RDS/hive1host}`.

```
hive://jdbc:hive2://hive1host:10000/default?...&${Test/RDS/hive1host}&...
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
hive://jdbc:hive2://hive1host:10000/default?...&UID=sample2&PWD=sample2&...
```

Saat ini, konektor Hortonworks Hive mengenali properti dan JDBC. `UID` `PWD`

### Menggunakan handler koneksi tunggal
<a name="connectors-hortonworks-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance Hortonworks Hive.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | HiveCompositeHandler | 
| Penangan metadata | HiveMetadataHandler | 
| Rekam handler | HiveRecordHandler | 

#### Parameter handler koneksi tunggal
<a name="connectors-hortonworks-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk satu contoh Hortonworks Hive didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1host:10000/default?secret=\$1\$1Test/RDS/hive1host\$1 | 

### Parameter tumpahan
<a name="connectors-hortonworks-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-hortonworks-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC, Hortonworks Hive, dan Arrow.


****  

| JDBC | Sarang Hortonworks | Panah | 
| --- | --- | --- | 
| Boolean | Boolean | Bit | 
| Bilangan Bulat | TINYINT | Mungil | 
| Pendek | SMALLINT | Orang kecil | 
| Bilangan Bulat | INT | Int | 
| Panjang | BIGINT | Bigint | 
| float | mengapung4 | Mengapung4 | 
| Ganda | mengapung8 | Mengapung8 | 
| Date | tanggal | DateDay | 
| Stempel waktu | timestamp | DateMilli | 
| String | VARCHAR | Varchar | 
| Byte | byte | Varbiner | 
| BigDecimal | Decimal | Decimal | 
| ARRAY | N/A (lihat catatan) | Daftar | 

**catatan**  
Saat ini, Hortonworks Hive tidak mendukung jenis agregat`ARRAY`,,, `MAP` atau. `STRUCT` `UNIONTYPE` Kolom tipe agregat diperlakukan sebagai `VARCHAR` kolom dalam SQL.

## Partisi dan split
<a name="connectors-hortonworks-partitions-and-splits"></a>

Partisi digunakan untuk menentukan cara menghasilkan split untuk konektor. Athena membangun kolom sintetis tipe `varchar` yang mewakili skema partisi untuk tabel untuk membantu konektor menghasilkan split. Konektor tidak mengubah definisi tabel yang sebenarnya.

## Performa
<a name="connectors-hortonworks-performance"></a>

Hortonworks Hive mendukung partisi statis. Konektor Athena Hortonworks Hive dapat mengambil data dari partisi ini secara paralel. Jika Anda ingin menanyakan kumpulan data yang sangat besar dengan distribusi partisi seragam, partisi statis sangat disarankan. Memilih subset kolom secara signifikan mempercepat runtime kueri dan mengurangi data yang dipindai. Konektor Hortonworks Hive tahan terhadap pelambatan karena konkurensi.

Konektor Athena Hortonworks Hive melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa, predikat sederhana, dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri. 

### Klausul LIMIT
<a name="connectors-hive-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Predikat
<a name="connectors-hive-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena Hortonworks Hive dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Hortonworks Hive untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena Hortonworks Hive berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-hive-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Kueri passthrough
<a name="connectors-hive-passthrough-queries"></a>

[Konektor Hortonworks Hive mendukung kueri passthrough.](federated-query-passthrough.md) Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Hortonworks Hive, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh kueri berikut mendorong kueri ke sumber data di Hortonworks Hive. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-hive-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-hive-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/pom.xml) untuk konektor Hortonworks Hive di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-hortonworks-hive) GitHub di.com.

# Konektor Amazon Athena Apache Kafka
<a name="connectors-kafka"></a>

Konektor Amazon Athena untuk Apache Kafka memungkinkan Amazon Athena menjalankan kueri SQL pada topik Apache Kafka Anda. Gunakan konektor ini untuk melihat topik [Apache Kafka](https://kafka.apache.org/) sebagai tabel dan pesan sebagai baris di Athena.

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

## Prasyarat
<a name="connectors-kafka-prerequisites"></a>

Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-kafka-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Tipe data tanggal dan stempel waktu dalam kondisi filter harus dilemparkan ke tipe data yang sesuai.
+ Tipe data tanggal dan stempel waktu tidak didukung untuk jenis file CSV dan diperlakukan sebagai nilai varchar.
+ Pemetaan ke bidang JSON bersarang tidak didukung. Konektor hanya memetakan bidang tingkat atas.
+ Konektor tidak mendukung tipe yang kompleks. Tipe kompleks ditafsirkan sebagai string.
+ Untuk mengekstrak atau bekerja dengan nilai JSON yang kompleks, gunakan fungsi terkait JSON yang tersedia di Athena. Untuk informasi selengkapnya, lihat [Ekstrak data JSON dari string](extracting-data-from-JSON.md).
+ Konektor tidak mendukung akses ke metadata pesan Kafka.

## Ketentuan
<a name="connectors-kafka-terms"></a>
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Endpoint Kafka** — String teks yang membuat koneksi ke instance Kafka.

## Kompatibilitas cluster
<a name="connectors-kafka-cluster-compatibility"></a>

Konektor Kafka dapat digunakan dengan jenis cluster berikut.
+ **Standalone Kafka** — Koneksi langsung ke Kafka (diautentikasi atau tidak diautentikasi).
+ **Confluent** — Koneksi langsung ke Confluent Kafka. *Untuk informasi tentang penggunaan Athena dengan data Confluent Kafka, lihat [Memvisualisasikan data Confluent di Quick menggunakan Amazon Athena di Blog Business](https://aws.amazon.com/blogs/business-intelligence/visualize-confluent-data-in-amazon-quicksight-using-amazon-athena/) Intelligence.AWS * 

### Menghubungkan ke Confluent
<a name="connectors-kafka-connecting-to-confluent"></a>

Menghubungkan ke Confluent membutuhkan langkah-langkah berikut:

1. Buat kunci API dari Confluent.

1. Simpan nama pengguna dan kata sandi untuk kunci Confluent API ke dalam. AWS Secrets Manager

1. Berikan nama rahasia untuk variabel `secrets_manager_secret` lingkungan di konektor Kafka.

1. Ikuti langkah-langkah di [Menyiapkan konektor Kafka](#connectors-kafka-setup) bagian dokumen ini.

## Metode otentikasi yang didukung
<a name="connectors-kafka-supported-authentication-methods"></a>

Konektor mendukung metode otentikasi berikut.
+ [SSL](https://kafka.apache.org/documentation/#security_ssl)
+ [SELEMPANG](https://kafka.apache.org/documentation/#security_sasl_scram)
+ SASL/PLAIN
+ SELEMPANG/PLAINTEXT
+ NO\$1AUTH
+ **Platform Kafka dan Confluent yang dikelola sendiri** - SSL,, NO\$1AUTH SASL/SCRAM, SASL/PLAINTEXT
+ **Kafka dan Confluent Cloud yang dikelola sendiri** - SASL/PLAIN

Untuk informasi selengkapnya, lihat [Mengkonfigurasi otentikasi untuk konektor Athena Kafka](#connectors-kafka-setup-configuring-authentication).

## Format data masukan yang didukung
<a name="connectors-kafka-supported-input-data-formats"></a>

Konektor mendukung format data input berikut.
+ JSON
+ CSV
+ AVRO
+ PROTOBUF (BUFFER PROTOKOL)

## Parameter
<a name="connectors-kafka-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Athena Kafka.
+ **auth\$1type** - Menentukan jenis otentikasi cluster. Konektor mendukung jenis otentikasi berikut:
  + **NO\$1AUTH —** Connect langsung ke Kafka (misalnya, ke cluster Kafka yang digunakan melalui instance EC2 yang tidak menggunakan otentikasi).
  + **SASL\$1SSL\$1PLAIN** — Metode ini menggunakan protokol `SASL_SSL` keamanan dan mekanisme `PLAIN` SASL. Untuk informasi selengkapnya, lihat [konfigurasi SASL](https://kafka.apache.org/documentation/#security_sasl_config) dalam dokumentasi Apache Kafka.
  + **SASL\$1PLAINTEXT\$1PLAIN** — Metode ini menggunakan protokol `SASL_PLAINTEXT` keamanan dan mekanisme `PLAIN` SASL. Untuk informasi selengkapnya, lihat [konfigurasi SASL](https://kafka.apache.org/documentation/#security_sasl_config) dalam dokumentasi Apache Kafka.
  + **SASL\$1SSL\$1SCRAM\$1 SHA512** — Anda dapat menggunakan jenis otentikasi ini untuk mengontrol akses ke cluster Apache Kafka Anda. Metode ini menyimpan nama pengguna dan kata sandi di AWS Secrets Manager. Rahasianya harus dikaitkan dengan cluster Kafka. Untuk informasi selengkapnya, lihat [Otentikasi menggunakan SASL/SCRAM](https://kafka.apache.org/documentation/#security_sasl_scram) di dokumentasi Apache Kafka.
  + **SASL\$1PLAINTEXT\$1SCRAM\$1 SHA512** — Metode ini menggunakan protokol `SASL_PLAINTEXT` keamanan dan mekanisme. `SCRAM_SHA512 SASL` Metode ini menggunakan nama pengguna dan kata sandi Anda yang disimpan di AWS Secrets Manager. Untuk informasi selengkapnya, lihat bagian [konfigurasi SASL](https://kafka.apache.org/documentation/#security_sasl_config) dari dokumentasi Apache Kafka.
  + **SSL** — Otentikasi SSL menggunakan penyimpanan kunci dan file toko kepercayaan untuk terhubung dengan cluster Apache Kafka. Anda harus membuat file trust store dan key store, mengunggahnya ke bucket Amazon S3, dan memberikan referensi ke Amazon S3 saat Anda menggunakan konektor. Toko kunci, toko kepercayaan, dan kunci SSL disimpan di dalamnya AWS Secrets Manager. Klien Anda harus memberikan kunci AWS rahasia saat konektor dikerahkan. Untuk informasi selengkapnya, lihat [Enkripsi dan Otentikasi menggunakan SSL di dokumentasi](https://kafka.apache.org/documentation/#security_ssl) Apache Kafka.

    Untuk informasi selengkapnya, lihat [Mengkonfigurasi otentikasi untuk konektor Athena Kafka](#connectors-kafka-setup-configuring-authentication).
+ **certificates\$1s3\$1reference** — Lokasi Amazon S3 yang berisi sertifikat (penyimpanan kunci dan file penyimpanan kepercayaan).
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **kafka\$1endpoint — Detail titik akhir** untuk diberikan kepada Kafka.
+ **schema\$1registry\$1url — Alamat URL** untuk registri skema (misalnya,). `http://schema-registry.example.org:8081` Berlaku untuk format `AVRO` dan `PROTOBUF` data. Athena hanya mendukung registri skema Confluent.
+ **secrets\$1manager\$1secret** — Nama rahasia tempat AWS kredensialnya disimpan.
+ **Parameter tumpahan** — Fungsi Lambda menyimpan sementara (“tumpahan”) data yang tidak sesuai dengan memori ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama. Gunakan parameter dalam tabel berikut untuk menentukan lokasi tumpahan.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/connectors-kafka.html)
+ **Subnet IDs** — Satu atau lebih subnet IDs yang sesuai dengan subnet yang dapat digunakan fungsi Lambda untuk mengakses sumber data Anda.
  + Cluster **Kafka Publik atau cluster Confluent Cloud standar** — Kaitkan konektor dengan subnet pribadi yang memiliki NAT Gateway.
  + **Cluster Confluent Cloud dengan konektivitas pribadi** — Kaitkan konektor dengan subnet pribadi yang memiliki rute ke cluster Confluent Cloud.
    + Untuk [AWS Transit Gateway](https://docs.confluent.io/cloud/current/networking/aws-transit-gateway.html), subnet harus berada dalam VPC yang dilampirkan ke gateway transit yang sama yang digunakan Confluent Cloud.
    + Untuk [VPC Peering](https://docs.confluent.io/cloud/current/networking/peering/aws-peering.html), subnet harus dalam VPC yang diintip ke Confluent Cloud VPC.
    + Untuk [AWS PrivateLink](https://docs.confluent.io/cloud/current/networking/private-links/aws-privatelink.html), subnet harus dalam VPC yang memiliki rute ke titik akhir VPC yang terhubung ke Confluent Cloud.

**catatan**  
Jika Anda menyebarkan konektor ke VPC untuk mengakses sumber daya pribadi dan juga ingin terhubung ke layanan yang dapat diakses publik seperti Confluent, Anda harus mengaitkan konektor dengan subnet pribadi yang memiliki NAT Gateway. Untuk informasi selengkapnya, lihat [gateway NAT di Panduan](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) Pengguna Amazon VPC.

## Dukungan tipe data
<a name="connectors-kafka-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai yang didukung untuk Kafka dan Apache Arrow.


****  

| Kafka | Panah | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| TIMESTAMP | MILIDETIK | 
| TANGGAL | DAY | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 

## Partisi dan split
<a name="connectors-kafka-partitions-and-splits"></a>

Topik Kafka dibagi menjadi beberapa partisi. Setiap partisi dipesan. Setiap pesan dalam partisi memiliki ID tambahan yang disebut *offset*. Setiap partisi Kafka dibagi lagi menjadi beberapa split untuk pemrosesan paralel. Data tersedia untuk periode retensi yang dikonfigurasi dalam cluster Kafka.

## Praktik terbaik
<a name="connectors-kafka-best-practices"></a>

Sebagai praktik terbaik, gunakan predikat pushdown saat Anda menanyakan Athena, seperti pada contoh berikut.

```
SELECT * 
FROM "kafka_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE integercol = 2147483647
```

```
SELECT * 
FROM "kafka_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Menyiapkan konektor Kafka
<a name="connectors-kafka-setup"></a>

Sebelum Anda dapat menggunakan konektor, Anda harus mengatur cluster Apache Kafka Anda, menggunakan [AWS Glue Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) untuk menentukan skema Anda, dan mengkonfigurasi otentikasi untuk konektor.

Saat bekerja dengan AWS Glue Schema Registry, perhatikan poin-poin berikut:
+ Pastikan bahwa teks di bidang **Deskripsi** dari AWS Glue Schema Registry menyertakan string`{AthenaFederationKafka}`. String penanda ini diperlukan untuk AWS Glue Registries yang Anda gunakan dengan konektor Amazon Athena Kafka.
+ Untuk kinerja terbaik, gunakan hanya huruf kecil untuk nama database dan nama tabel Anda. Menggunakan casing campuran menyebabkan konektor melakukan pencarian case insensitive yang lebih intensif secara komputasi.

**Untuk mengatur lingkungan Apache Kafka dan AWS Glue Registri Skema**

1. Siapkan lingkungan Apache Kafka Anda.

1. Unggah file deskripsi topik Kafka (yaitu skema) dalam format JSON ke Schema Registry. AWS Glue Untuk informasi selengkapnya, lihat [Mengintegrasikan dengan Registri AWS Glue Skema](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-integrations.html) di Panduan AWS Glue Pengembang.

1. Untuk menggunakan format `AVRO` atau `PROTOBUF` data saat Anda menentukan skema di Registri AWS Glue Skema:
   + Untuk **nama Skema**, masukkan nama topik Kafka dalam casing yang sama dengan aslinya.
   + Untuk **format Data**, pilih **Apache Avro** atau **Protocol** Buffers.

    Misalnya skema, lihat bagian berikut.

### Contoh skema untuk Registri AWS Glue Skema
<a name="connectors-kafka-setup-schema-examples"></a>

Gunakan format contoh di bagian ini saat Anda mengunggah skema Anda ke Registri [AWS Glue Skema](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html).

#### Contoh skema tipe JSON
<a name="connectors-kafka-setup-schema-examples-json"></a>

Dalam contoh berikut, skema yang akan dibuat dalam AWS Glue Schema Registry menentukan `json` sebagai nilai untuk `dataFormat` dan menggunakan untuk. `datatypejson` `topicName`

**catatan**  
Nilai untuk `topicName` harus menggunakan casing yang sama dengan nama topik di Kafka. 

```
{
  "topicName": "datatypejson",
  "message": {
    "dataFormat": "json",
    "fields": [
      {
        "name": "intcol",
        "mapping": "intcol",
        "type": "INTEGER"
      },
      {
        "name": "varcharcol",
        "mapping": "varcharcol",
        "type": "VARCHAR"
      },
      {
        "name": "booleancol",
        "mapping": "booleancol",
        "type": "BOOLEAN"
      },
      {
        "name": "bigintcol",
        "mapping": "bigintcol",
        "type": "BIGINT"
      },
      {
        "name": "doublecol",
        "mapping": "doublecol",
        "type": "DOUBLE"
      },
      {
        "name": "smallintcol",
        "mapping": "smallintcol",
        "type": "SMALLINT"
      },
      {
        "name": "tinyintcol",
        "mapping": "tinyintcol",
        "type": "TINYINT"
      },
      {
        "name": "datecol",
        "mapping": "datecol",
        "type": "DATE",
        "formatHint": "yyyy-MM-dd"
      },
      {
        "name": "timestampcol",
        "mapping": "timestampcol",
        "type": "TIMESTAMP",
        "formatHint": "yyyy-MM-dd HH:mm:ss.SSS"
      }
    ]
  }
}
```

#### Contoh skema tipe CSV
<a name="connectors-kafka-setup-schema-examples-csv"></a>

Dalam contoh berikut, skema yang akan dibuat dalam AWS Glue Schema Registry menentukan `csv` sebagai nilai untuk `dataFormat` dan menggunakan untuk. `datatypecsvbulk` `topicName` Nilai untuk `topicName` harus menggunakan casing yang sama dengan nama topik di Kafka.

```
{
  "topicName": "datatypecsvbulk",
  "message": {
    "dataFormat": "csv",
    "fields": [
      {
        "name": "intcol",
        "type": "INTEGER",
        "mapping": "0"
      },
      {
        "name": "varcharcol",
        "type": "VARCHAR",
        "mapping": "1"
      },
      {
        "name": "booleancol",
        "type": "BOOLEAN",
        "mapping": "2"
      },
      {
        "name": "bigintcol",
        "type": "BIGINT",
        "mapping": "3"
      },
      {
        "name": "doublecol",
        "type": "DOUBLE",
        "mapping": "4"
      },
      {
        "name": "smallintcol",
        "type": "SMALLINT",
        "mapping": "5"
      },
      {
        "name": "tinyintcol",
        "type": "TINYINT",
        "mapping": "6"
      },
      {
        "name": "floatcol",
        "type": "DOUBLE",
        "mapping": "7"
      }
    ]
  }
}
```

#### Contoh skema tipe AVRO
<a name="connectors-kafka-setup-schema-examples-avro"></a>

Contoh berikut digunakan untuk membuat skema berbasis AVRO di Schema Registry. AWS Glue **Saat Anda menentukan skema di Registri AWS Glue Skema, untuk nama **Skema, Anda memasukkan nama** topik Kafka dalam casing yang sama dengan aslinya, dan untuk **format Data**, Anda memilih Apache Avro.** Karena Anda menentukan informasi ini secara langsung di registri, `topicName` bidang `dataformat` dan tidak diperlukan.

```
{
    "type": "record",
    "name": "avrotest",
    "namespace": "example.com",
    "fields": [{
            "name": "id",
            "type": "int"
        },
        {
            "name": "name",
            "type": "string"
        }
    ]
}
```

#### Contoh skema tipe PROTOBUF
<a name="connectors-kafka-setup-schema-examples-protobuf"></a>

Contoh berikut digunakan untuk membuat skema berbasis Protobuf di Schema Registry. AWS Glue **Saat Anda menentukan skema di Registri AWS Glue Skema, untuk nama **Skema, Anda memasukkan nama** topik Kafka dalam casing yang sama dengan aslinya, dan untuk **format Data**, Anda memilih Protocol Buffer.** Karena Anda menentukan informasi ini secara langsung di registri, `topicName` bidang `dataformat` dan tidak diperlukan. Baris pertama mendefinisikan skema sebagai PROTOBUF.

```
syntax = "proto3";
message protobuftest {
string name = 1;
int64 calories = 2;
string colour = 3;
}
```

Untuk informasi selengkapnya tentang menambahkan registri dan skema di AWS Glue Schema Registry, lihat [Memulai Schema Registry di dokumentasi](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-gs.html). AWS Glue 

### Mengkonfigurasi otentikasi untuk konektor Athena Kafka
<a name="connectors-kafka-setup-configuring-authentication"></a>

Anda dapat menggunakan berbagai metode untuk mengautentikasi ke cluster Apache Kafka Anda, termasuk SSL,. SASL/SCRAM, SASL/PLAIN, and SASL/PLAINTEXT

Tabel berikut menunjukkan jenis otentikasi untuk konektor dan protokol keamanan dan mekanisme SASL untuk masing-masing. Untuk informasi lebih lanjut, lihat bagian [Keamanan](https://kafka.apache.org/documentation/#security) dari dokumentasi Apache Kafka.


****  

| auth\$1type | security.protocol | sasl.mekanisme | Kompatibilitas tipe cluster | 
| --- | --- | --- | --- | 
| SASL\$1SSL\$1PLAIN | SASL\$1SSL | PLAIN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1PLAINTEXT\$1PLAIN | SASL\$1PLAINTEXT | PLAIN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1SSL\$1SCRAM\$1SHA512 | SASL\$1SSL | SCRAM-SHA-512 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1PLAINTEXT\$1SCRAM\$1SHA512 | SASL\$1PLAINTEXT | SCRAM-SHA-512 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/connectors-kafka.html)  | 
| SSL | SSL | N/A |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/connectors-kafka.html)  | 

#### SSL
<a name="connectors-kafka-setup-configuring-authentication-tls"></a>

Jika klaster diautentikasi SSL, Anda harus membuat file trust store dan key store dan mengunggahnya ke bucket Amazon S3. Anda harus memberikan referensi Amazon S3 ini saat Anda menggunakan konektor. Toko kunci, toko kepercayaan, dan kunci SSL disimpan di file. AWS Secrets Manager Anda memberikan kunci AWS rahasia saat Anda menggunakan konektor.

Untuk informasi tentang cara membuat rahasia di Secrets Manager, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Untuk menggunakan jenis otentikasi ini, atur variabel lingkungan seperti yang ditunjukkan pada tabel berikut.


****  

| Parameter | Nilai | 
| --- | --- | 
| auth\$1type | SSL | 
| certificates\$1s3\$1reference | Lokasi Amazon S3 yang berisi sertifikat. | 
| secrets\$1manager\$1secret | Nama kunci AWS rahasiamu. | 

Setelah Anda membuat rahasia di Secrets Manager, Anda dapat melihatnya di konsol Secrets Manager.

**Untuk melihat rahasia Anda di Secrets Manager**

1. Buka konsol Secrets Manager di [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Di panel navigasi, pilih **Rahasia**.

1. Pada halaman **Rahasia**, pilih tautan ke rahasia Anda.

1. Pada halaman detail untuk rahasia Anda, pilih **Ambil nilai rahasia**.

   Gambar berikut menunjukkan contoh rahasia dengan tiga pasangan kunci/nilai:`keystore_password`,`truststore_password`, dan. `ssl_key_password`  
![\[Mengambil rahasia SSL di Secrets Manager\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-kafka-setup-1.png)

Untuk informasi selengkapnya tentang penggunaan SSL dengan Kafka, lihat [Enkripsi dan Otentikasi menggunakan SSL](https://kafka.apache.org/documentation/#security_ssl) di dokumentasi Apache Kafka.

#### SASL/SCRAM
<a name="connectors-kafka-setup-configuring-authentication-sasl-scram"></a>

Jika klaster Anda menggunakan otentikasi SCRAM, berikan kunci Secrets Manager yang terkait dengan cluster saat Anda menerapkan konektor. AWS Kredensi pengguna (kunci rahasia dan kunci akses) digunakan untuk mengautentikasi dengan cluster.

Mengatur variabel lingkungan seperti yang ditunjukkan pada tabel berikut.


****  

| Parameter | Nilai | 
| --- | --- | 
| auth\$1type | SASL\$1SSL\$1SCRAM\$1SHA512 | 
| secrets\$1manager\$1secret | Nama kunci AWS rahasiamu. | 

Gambar berikut menunjukkan contoh rahasia di konsol Secrets Manager dengan dua key/value pasang: satu untuk`username`, dan satu untuk`password`.

![\[Mengambil rahasia SCRAM di Secrets Manager\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-kafka-setup-2.png)


Untuk informasi selengkapnya tentang penggunaan SASL/SCRAM dengan Kafka, lihat [Otentikasi menggunakan SASL/SCRAM](https://kafka.apache.org/documentation/#security_sasl_scram) di dokumentasi Apache Kafka.

## Informasi lisensi
<a name="connectors-kafka-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-kafka/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-kafka/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-kafka-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-kafka) GitHub di.com.

# Konektor MSK Amazon Athena
<a name="connectors-msk"></a>

Konektor Amazon Athena untuk Amazon [MSK memungkinkan Amazon](https://aws.amazon.com/msk/) Athena menjalankan kueri SQL pada topik Apache Kafka Anda. Gunakan konektor ini untuk melihat topik [Apache Kafka](https://kafka.apache.org/) sebagai tabel dan pesan sebagai baris di Athena. Untuk informasi tambahan, lihat [Menganalisis data streaming real-time di Amazon MSK dengan Amazon](https://aws.amazon.com/blogs/big-data/analyze-real-time-streaming-data-in-amazon-msk-with-amazon-athena/) Athena di Big Data AWS Blog.

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

## Prasyarat
<a name="connectors-msk-prerequisites"></a>

Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-msk-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Tipe data tanggal dan stempel waktu dalam kondisi filter harus dilemparkan ke tipe data yang sesuai.
+ Tipe data tanggal dan stempel waktu tidak didukung untuk jenis file CSV dan diperlakukan sebagai nilai varchar.
+ Pemetaan ke bidang JSON bersarang tidak didukung. Konektor hanya memetakan bidang tingkat atas.
+ Konektor tidak mendukung tipe yang kompleks. Tipe kompleks ditafsirkan sebagai string.
+ Untuk mengekstrak atau bekerja dengan nilai JSON yang kompleks, gunakan fungsi terkait JSON yang tersedia di Athena. Untuk informasi selengkapnya, lihat [Ekstrak data JSON dari string](extracting-data-from-JSON.md).
+ Konektor tidak mendukung akses ke metadata pesan Kafka.

## Ketentuan
<a name="connectors-msk-terms"></a>
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Endpoint Kafka** — String teks yang membuat koneksi ke instance Kafka.

## Kompatibilitas cluster
<a name="connectors-msk-cluster-compatibility"></a>

Konektor MSK dapat digunakan dengan jenis cluster berikut.
+ **MSK Provisioned cluster** — Anda secara manual menentukan, memantau, dan menskalakan kapasitas cluster.
+ **MSK Serverless cluster** — Menyediakan kapasitas sesuai permintaan yang diskalakan secara otomatis sebagai timbangan aplikasi. I/O 
+ **Standalone Kafka** — Koneksi langsung ke Kafka (diautentikasi atau tidak diautentikasi).

## Metode otentikasi yang didukung
<a name="connectors-msk-supported-authentication-methods"></a>

Konektor mendukung metode otentikasi berikut.
+ [SALL/IAM](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html) 
+ [SSL](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html)
+ [SELEMPANG](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html)
+ SASL/PLAIN
+ SELEMPANG/TEKS BIASA
+ NO\$1AUTH

  Untuk informasi selengkapnya, lihat [Mengkonfigurasi otentikasi untuk konektor MSK Athena](#connectors-msk-setup-configuring-authentication).

## Format data input yang didukung
<a name="connectors-msk-supported-input-data-formats"></a>

Konektor mendukung format data input berikut.
+ JSON
+ CSV

## Parameter
<a name="connectors-msk-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor MSK Athena.
+ **auth\$1type** - Menentukan jenis otentikasi cluster. Konektor mendukung jenis otentikasi berikut:
  + **NO\$1AUTH —** Terhubung langsung ke Kafka tanpa otentikasi (misalnya, ke cluster Kafka yang digunakan melalui instans EC2 yang tidak menggunakan otentikasi).
  + **SASL\$1SSL\$1PLAIN** — Metode ini menggunakan protokol `SASL_SSL` keamanan dan mekanisme `PLAIN` SASL.
  + **SASL\$1PLAINTEXT\$1PLAIN** — Metode ini menggunakan protokol `SASL_PLAINTEXT` keamanan dan mekanisme `PLAIN` SASL.
**catatan**  
Jenis `SASL_SSL_PLAIN` dan `SASL_PLAINTEXT_PLAIN` otentikasi didukung oleh Apache Kafka tetapi tidak oleh Amazon MSK.
  + **SASL\$1SSL\$1 AWS\$1MSK \$1IAM - Kontrol** akses IAM untuk Amazon MSK memungkinkan Anda menangani otentikasi dan otorisasi untuk kluster MSK Anda. AWS Kredensyal pengguna Anda (kunci rahasia dan kunci akses) digunakan untuk terhubung dengan cluster. Untuk informasi selengkapnya, lihat [Kontrol akses IAM](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html) di Panduan Pengembang Amazon Managed Streaming for Apache Kafka Kafka.
  + **SASL\$1SSL\$1SCRAM\$1 SHA512** - Anda dapat menggunakan jenis otentikasi ini untuk mengontrol akses ke kluster MSK Amazon Anda. Metode ini menyimpan nama pengguna dan kata sandi AWS Secrets Manager. Rahasianya harus dikaitkan dengan cluster MSK Amazon. Untuk informasi selengkapnya, lihat [Menyiapkan SASL/SCRAM autentikasi untuk klaster MSK Amazon di Panduan Pengembang](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html#msk-password-tutorial) Amazon Managed Streaming for Apache Kafka.
  + **SSL** — Otentikasi SSL menggunakan penyimpanan kunci dan file penyimpanan kepercayaan untuk terhubung dengan kluster MSK Amazon. Anda harus membuat file trust store dan key store, mengunggahnya ke bucket Amazon S3, dan memberikan referensi ke Amazon S3 saat Anda menggunakan konektor. Toko kunci, toko kepercayaan, dan kunci SSL disimpan di AWS Secrets Manager. Klien Anda harus memberikan kunci AWS rahasia saat konektor dikerahkan. Untuk informasi selengkapnya, lihat [Autentikasi TLS Mutual di Panduan Pengembang](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) Amazon Managed Streaming for Apache Kafka Kafka.

    Untuk informasi selengkapnya, lihat [Mengkonfigurasi otentikasi untuk konektor MSK Athena](#connectors-msk-setup-configuring-authentication).
+ **certificates\$1s3\$1reference** — Lokasi Amazon S3 yang berisi sertifikat (penyimpanan kunci dan file penyimpanan kepercayaan).
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **kafka\$1endpoint — Detail titik akhir** untuk diberikan kepada Kafka. Misalnya, untuk klaster MSK Amazon, Anda menyediakan [URL bootstrap](https://docs.aws.amazon.com/msk/latest/developerguide/msk-get-bootstrap-brokers.html) untuk klaster.
+ **secrets\$1manager\$1secret** — Nama rahasia tempat AWS kredensialnya disimpan. Parameter ini tidak diperlukan untuk otentikasi IAM.
+ **Parameter tumpahan** — Fungsi Lambda menyimpan sementara (“tumpahan”) data yang tidak sesuai dengan memori ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama. Gunakan parameter dalam tabel berikut untuk menentukan lokasi tumpahan.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/connectors-msk.html)

## Dukungan tipe data
<a name="connectors-msk-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai yang didukung untuk Kafka dan Apache Arrow.


****  

| Kafka | Panah | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| TIMESTAMP | MILIDETIK | 
| TANGGAL | DAY | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 

## Partisi dan split
<a name="connectors-msk-partitions-and-splits"></a>

Topik Kafka dibagi menjadi beberapa partisi. Setiap partisi dipesan. Setiap pesan dalam partisi memiliki ID tambahan yang disebut *offset*. Setiap partisi Kafka dibagi lagi menjadi beberapa split untuk pemrosesan paralel. Data tersedia untuk periode retensi yang dikonfigurasi dalam cluster Kafka.

## Praktik terbaik
<a name="connectors-msk-best-practices"></a>

Sebagai praktik terbaik, gunakan predikat pushdown saat Anda menanyakan Athena, seperti pada contoh berikut.

```
SELECT * 
FROM "msk_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE integercol = 2147483647
```

```
SELECT * 
FROM "msk_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Menyiapkan konektor MSK
<a name="connectors-msk-setup"></a>

Sebelum Anda dapat menggunakan konektor, Anda harus mengatur cluster MSK Amazon Anda, menggunakan [AWS Glue Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) untuk menentukan skema Anda, dan mengkonfigurasi otentikasi untuk konektor.

**catatan**  
Jika Anda menyebarkan konektor ke VPC untuk mengakses sumber daya pribadi dan juga ingin terhubung ke layanan yang dapat diakses publik seperti Confluent, Anda harus mengaitkan konektor dengan subnet pribadi yang memiliki NAT Gateway. Untuk informasi selengkapnya, lihat [gateway NAT di Panduan](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) Pengguna Amazon VPC.

Saat bekerja dengan AWS Glue Schema Registry, perhatikan poin-poin berikut:
+ Pastikan bahwa teks di bidang **Description** dari AWS Glue Schema Registry menyertakan string`{AthenaFederationMSK}`. String penanda ini diperlukan untuk AWS Glue Registries yang Anda gunakan dengan konektor MSK Amazon Athena.
+ Untuk kinerja terbaik, gunakan hanya huruf kecil untuk nama database dan nama tabel Anda. Menggunakan casing campuran menyebabkan konektor melakukan pencarian case insensitive yang lebih intensif secara komputasi.

**Untuk mengatur lingkungan MSK Amazon dan Registri AWS Glue Skema**

1. Siapkan lingkungan MSK Amazon Anda. Untuk informasi dan langkah-langkahnya, lihat [Menyiapkan MSK Amazon](https://docs.aws.amazon.com/msk/latest/developerguide/before-you-begin.html) dan [Memulai menggunakan MSK Amazon di Panduan Pengembang](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html) Amazon Managed Streaming for Apache Kafka.

1. Unggah file deskripsi topik Kafka (yaitu skema) dalam format JSON ke Schema Registry. AWS Glue Untuk informasi selengkapnya, lihat [Mengintegrasikan dengan Registri AWS Glue Skema](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-integrations.html) di Panduan AWS Glue Pengembang. Misalnya skema, lihat bagian berikut.

### Contoh skema untuk Registri AWS Glue Skema
<a name="connectors-msk-setup-schema-examples"></a>

Gunakan format contoh di bagian ini saat Anda mengunggah skema Anda ke Registri [AWS Glue Skema](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html).

#### Contoh skema tipe JSON
<a name="connectors-msk-setup-schema-examples-json"></a>

Dalam contoh berikut, skema yang akan dibuat dalam AWS Glue Schema Registry menentukan `json` sebagai nilai untuk `dataFormat` dan menggunakan untuk. `datatypejson` `topicName`

**catatan**  
Nilai untuk `topicName` harus menggunakan casing yang sama dengan nama topik di Kafka. 

```
{
  "topicName": "datatypejson",
  "message": {
    "dataFormat": "json",
    "fields": [
      {
        "name": "intcol",
        "mapping": "intcol",
        "type": "INTEGER"
      },
      {
        "name": "varcharcol",
        "mapping": "varcharcol",
        "type": "VARCHAR"
      },
      {
        "name": "booleancol",
        "mapping": "booleancol",
        "type": "BOOLEAN"
      },
      {
        "name": "bigintcol",
        "mapping": "bigintcol",
        "type": "BIGINT"
      },
      {
        "name": "doublecol",
        "mapping": "doublecol",
        "type": "DOUBLE"
      },
      {
        "name": "smallintcol",
        "mapping": "smallintcol",
        "type": "SMALLINT"
      },
      {
        "name": "tinyintcol",
        "mapping": "tinyintcol",
        "type": "TINYINT"
      },
      {
        "name": "datecol",
        "mapping": "datecol",
        "type": "DATE",
        "formatHint": "yyyy-MM-dd"
      },
      {
        "name": "timestampcol",
        "mapping": "timestampcol",
        "type": "TIMESTAMP",
        "formatHint": "yyyy-MM-dd HH:mm:ss.SSS"
      }
    ]
  }
}
```

#### Contoh skema tipe CSV
<a name="connectors-msk-setup-schema-examples-csv"></a>

Dalam contoh berikut, skema yang akan dibuat dalam AWS Glue Schema Registry menentukan `csv` sebagai nilai untuk `dataFormat` dan menggunakan untuk. `datatypecsvbulk` `topicName` Nilai untuk `topicName` harus menggunakan casing yang sama dengan nama topik di Kafka.

```
{
  "topicName": "datatypecsvbulk",
  "message": {
    "dataFormat": "csv",
    "fields": [
      {
        "name": "intcol",
        "type": "INTEGER",
        "mapping": "0"
      },
      {
        "name": "varcharcol",
        "type": "VARCHAR",
        "mapping": "1"
      },
      {
        "name": "booleancol",
        "type": "BOOLEAN",
        "mapping": "2"
      },
      {
        "name": "bigintcol",
        "type": "BIGINT",
        "mapping": "3"
      },
      {
        "name": "doublecol",
        "type": "DOUBLE",
        "mapping": "4"
      },
      {
        "name": "smallintcol",
        "type": "SMALLINT",
        "mapping": "5"
      },
      {
        "name": "tinyintcol",
        "type": "TINYINT",
        "mapping": "6"
      },
      {
        "name": "floatcol",
        "type": "DOUBLE",
        "mapping": "7"
      }
    ]
  }
}
```

### Mengkonfigurasi otentikasi untuk konektor MSK Athena
<a name="connectors-msk-setup-configuring-authentication"></a>

Anda dapat menggunakan berbagai metode untuk mengautentikasi ke kluster MSK Amazon Anda, termasuk IAM, SSL, SCRAM, dan Kafka mandiri.

Tabel berikut menunjukkan jenis otentikasi untuk konektor dan protokol keamanan dan mekanisme SASL untuk masing-masing. Untuk informasi selengkapnya, lihat [Otentikasi dan otorisasi untuk Apache Kafka di](https://docs.aws.amazon.com/msk/latest/developerguide/kafka_apis_iam.html) Panduan APIs Pengembang Amazon Managed Streaming for Apache Kafka.


****  

| auth\$1type | security.protocol | sasl.mekanisme | 
| --- | --- | --- | 
| SASL\$1SSL\$1PLAIN | SASL\$1SSL | PLAIN | 
| SASL\$1PLAINTEXT\$1PLAIN | SASL\$1PLAINTEXT | PLAIN | 
| SASL\$1SSL\$1AWS\$1MSK\$1IAM | SASL\$1SSL | AWS\$1MSK\$1IAM | 
| SASL\$1SSL\$1SCRAM\$1SHA512 | SASL\$1SSL | SCRAM-SHA-512 | 
| SSL | SSL | N/A | 

**catatan**  
Jenis `SASL_SSL_PLAIN` dan `SASL_PLAINTEXT_PLAIN` otentikasi didukung oleh Apache Kafka tetapi tidak oleh Amazon MSK.

#### SELEMPANG/IAM
<a name="connectors-msk-setup-configuring-authentication-sasl-iam"></a>

Jika klaster menggunakan autentikasi IAM, Anda harus mengonfigurasi kebijakan IAM untuk pengguna saat menyiapkan klaster. Untuk informasi selengkapnya, lihat [Kontrol akses IAM](https://docs.aws.amazon.com/msk/latest/developerguide/IAM-access-control.html) di Panduan Pengembang Amazon Managed Streaming for Apache Kafka Kafka.

Untuk menggunakan jenis otentikasi ini, setel variabel lingkungan `auth_type` Lambda untuk konektor. `SASL_SSL_AWS_MSK_IAM` 

#### SSL
<a name="connectors-msk-setup-configuring-authentication-tls"></a>

Jika klaster diautentikasi SSL, Anda harus membuat file trust store dan key store dan mengunggahnya ke bucket Amazon S3. Anda harus memberikan referensi Amazon S3 ini saat Anda menggunakan konektor. Toko kunci, toko kepercayaan, dan kunci SSL disimpan di file. AWS Secrets Manager Anda memberikan kunci AWS rahasia saat Anda menggunakan konektor.

Untuk informasi tentang cara membuat rahasia di Secrets Manager, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Untuk menggunakan jenis otentikasi ini, atur variabel lingkungan seperti yang ditunjukkan pada tabel berikut.


****  

| Parameter | Nilai | 
| --- | --- | 
| auth\$1type | SSL | 
| certificates\$1s3\$1reference | Lokasi Amazon S3 yang berisi sertifikat. | 
| secrets\$1manager\$1secret | Nama kunci AWS rahasiamu. | 

Setelah Anda membuat rahasia di Secrets Manager, Anda dapat melihatnya di konsol Secrets Manager.

**Untuk melihat rahasia Anda di Secrets Manager**

1. Buka konsol Secrets Manager di [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Di panel navigasi, pilih **Rahasia**.

1. Pada halaman **Rahasia**, pilih tautan ke rahasia Anda.

1. Pada halaman detail untuk rahasia Anda, pilih **Ambil nilai rahasia**.

   Gambar berikut menunjukkan contoh rahasia dengan tiga pasangan kunci/nilai:`keystore_password`,`truststore_password`, dan. `ssl_key_password`  
![\[Mengambil rahasia SSL di Secrets Manager\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-msk-setup-1.png)

#### SASL/SCRAM
<a name="connectors-msk-setup-configuring-authentication-sasl-scram"></a>

Jika klaster Anda menggunakan otentikasi SCRAM, berikan kunci Secrets Manager yang terkait dengan cluster saat Anda menerapkan konektor. AWS Kredensyal pengguna (kunci rahasia dan kunci akses) digunakan untuk mengautentikasi dengan cluster.

Mengatur variabel lingkungan seperti yang ditunjukkan pada tabel berikut.


****  

| Parameter | Nilai | 
| --- | --- | 
| auth\$1type | SASL\$1SSL\$1SCRAM\$1SHA512 | 
| secrets\$1manager\$1secret | Nama kunci AWS rahasiamu. | 

Gambar berikut menunjukkan contoh rahasia di konsol Secrets Manager dengan dua key/value pasang: satu untuk`username`, dan satu untuk`password`.

![\[Mengambil rahasia SCRAM di Secrets Manager\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-msk-setup-2.png)


## Informasi lisensi
<a name="connectors-msk-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-msk/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-msk/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-msk-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-msk) GitHub di.com.

# Konektor MySQL Amazon Athena
<a name="connectors-mysql"></a>

Konektor MySQL Amazon Athena Lambda memungkinkan Amazon Athena mengakses database MySQL.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-mysql-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).
+ Siapkan VPC dan grup keamanan sebelum Anda menggunakan konektor ini. Untuk informasi selengkapnya, lihat [Buat VPC untuk konektor atau koneksi sumber data AWS Glue](athena-connectors-vpc-creation.md).

## Batasan
<a name="connectors-mysql-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Karena Athena mengonversi kueri ke huruf kecil, nama tabel MySQL harus dalam huruf kecil. Misalnya, kueri Athena terhadap tabel bernama akan `myTable` gagal.
+ Jika Anda memigrasikan koneksi MySQL Anda ke Glue Catalog dan Lake Formation, hanya tabel huruf kecil dan nama kolom yang akan dikenali. 

## Ketentuan
<a name="connectors-mysql-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor MySQL.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-mysql-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor MySQL.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue 

### Koneksi Glue (disarankan)
<a name="connectors-mysql-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor MySQL dengan menggunakan objek koneksi Glue. 

Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor MySQL Lambda ke nama koneksi Glue yang akan digunakan.

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type MYSQL
```

**Properti lingkungan Lambda**

**glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor MySQL yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor MySQL yang dibuat menggunakan koneksi Glue hanya mendukung 2. `ConnectionSchemaVersion`

### Koneksi warisan
<a name="connectors-mysql-connection-legacy"></a>

Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat tanpa koneksi Glue terkait. Gunakan parameter berikut hanya jika Anda [menggunakan versi sebelumnya dari konektor sumber data Athena secara manual](connect-data-source-serverless-app-repo.md) atau saat `glue_connection` properti lingkungan tidak ditentukan.

#### String koneksi
<a name="connectors-mysql-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
mysql://${jdbc_connection_string}
```

**catatan**  
Jika Anda menerima kesalahan java.sql. SQLException: Nilai tanggal nol dilarang saat melakukan `SELECT` kueri pada tabel MySQL, tambahkan parameter berikut ke string koneksi Anda:  

```
zeroDateTimeBehavior=convertToNull
```
Untuk informasi selengkapnya, lihat [Kesalahan 'Nilai tanggal nol dilarang' saat mencoba memilih dari tabel MySQL](https://github.com/awslabs/aws-athena-query-federation/issues/760) di.com. GitHub

#### Menggunakan handler multiplexing
<a name="connectors-mysql-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas-kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | MySqlMuxCompositeHandler | 
| Penangan metadata | MySqlMuxMetadataHandler | 
| Rekam handler | MySqlMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-mysql-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmymysqlcatalog, maka nama variabel lingkungan adalah. mymysqlcatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi MySql MUX Lambda yang mendukung dua instance database`mysql1`: (default), dan. `mysql2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | mysql://jdbc:mysql://mysql2.host:3333/default?user=sample2&password=sample2 | 
| mysql\$1catalog1\$1connection\$1string | mysql://jdbc:mysql://mysql1.host:3306/default?\$1\$1Test/RDS/MySql1\$1 | 
| mysql\$1catalog2\$1connection\$1string | mysql://jdbc:mysql://mysql2.host:3333/default?user=sample2&password=sample2 | 

##### Memberikan kredensi
<a name="connectors-mysql-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${Test/RDS/MySql1}`.

```
mysql://jdbc:mysql://mysql1.host:3306/default?...&${Test/RDS/MySql1}&...
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
mysql://jdbc:mysql://mysql1host:3306/default?...&user=sample2&password=sample2&...
```

Saat ini, konektor MySQL mengenali `user` properti dan JDBC. `password`

#### Menggunakan handler koneksi tunggal
<a name="connectors-mysql-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance MySQL.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | MySqlCompositeHandler | 
| Penangan metadata | MySqlMetadataHandler | 
| Rekam handler | MySqlRecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-mysql-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk contoh MySQL tunggal didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | mysql://mysql1.host:3306/default?secret=Test/RDS/MySql1 | 

#### Parameter tumpahan
<a name="connectors-mysql-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-mysql-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC dan Arrow.


****  

| JDBC | Panah | 
| --- | --- | 
| Boolean | Bit | 
| Bilangan Bulat | Mungil | 
| Pendek | berkulit kecil | 
| Bilangan Bulat | Int | 
| Panjang | Besar-bigint | 
| float | Mengapung4 | 
| Ganda | Mengapung8 | 
| Date | DateDay | 
| Stempel waktu | DateMilli | 
| String | Varchar | 
| Byte | Varbiner | 
| BigDecimal | Decimal | 
| ARRAY | Daftar | 

## Partisi dan split
<a name="connectors-mysql-partitions-and-splits"></a>

Partisi digunakan untuk menentukan cara menghasilkan split untuk konektor. Athena membangun kolom sintetis tipe `varchar` yang mewakili skema partisi untuk tabel untuk membantu konektor menghasilkan split. Konektor tidak mengubah definisi tabel yang sebenarnya.

## Performa
<a name="connectors-mysql-performance"></a>

MySQL mendukung partisi asli. Konektor MySQL Athena dapat mengambil data dari partisi ini secara paralel. Jika Anda ingin menanyakan kumpulan data yang sangat besar dengan distribusi partisi yang seragam, partisi asli sangat disarankan.

Konektor MySQL Athena melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa, predikat sederhana, dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri. 

### Klausul LIMIT
<a name="connectors-mysql-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Predikat
<a name="connectors-mysql-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor MySQL Athena dapat menggabungkan ekspresi ini dan mendorongnya langsung ke MySQL untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor MySQL Athena berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-mysql-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

*Untuk artikel tentang penggunaan pushdown predikat untuk meningkatkan kinerja dalam kueri federasi, termasuk MySQL, [lihat Meningkatkan kueri federasi dengan pushdown predikat di Amazon Athena di](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) Blog Big Data.AWS *

## Kueri passthrough
<a name="connectors-mysql-passthrough-queries"></a>

[Konektor MySQL mendukung kueri passthrough.](federated-query-passthrough.md) Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan MySQL, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di MySQL. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-mysql-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-mysql-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/pom.xml) untuk konektor MySQL di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-mysql) GitHub di.com.

# Konektor Amazon Athena Neptunus
<a name="connectors-neptune"></a>

Amazon Neptune adalah layanan basis data grafik yang cepat, andal, terkelola penuh yang memudahkan membangun dan menjalankan aplikasi yang bekerja dengan set data yang sangat terhubung. Neptunus yang dibuat khusus, mesin basis data grafik berperforma tinggi menyimpan miliaran hubungan secara optimal dan grafik kueri dengan latensi hanya milidetik. Untuk informasi selengkapnya, lihat [ Panduan Pengguna Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html).

Konektor Amazon Athena Neptune memungkinkan Athena untuk berkomunikasi dengan contoh basis data grafik Neptune Anda, membuat data grafik Neptune Anda dapat diakses oleh kueri SQL.

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

## Prasyarat
<a name="connectors-neptune-prerequisites"></a>

Menggunakan konektor Neptunus membutuhkan tiga langkah berikut.
+ Menyiapkan cluster Neptunus
+ Menyiapkan sebuah AWS Glue Data Catalog
+ Menyebarkan konektor ke Anda Akun AWS. Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md). Untuk detail tambahan khusus tentang penerapan konektor Neptunus, lihat [Menerapkan Konektor Neptunus Amazon Athena di.com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/neptune-connector-setup). GitHub

## Batasan
<a name="connectors-neptune-limitations"></a>

Saat ini, Konektor Neptunus memiliki batasan berikut.
+ Memproyeksikan kolom, termasuk kunci utama (ID), tidak didukung. 

## Menyiapkan cluster Neptunus
<a name="connectors-neptune-setting-up-a-neptune-cluster"></a>

Jika Anda tidak memiliki cluster Amazon Neptunus dan kumpulan data grafik properti di dalamnya yang ingin Anda gunakan, Anda harus mengaturnya.

Pastikan Anda memiliki gateway internet dan gateway NAT di VPC yang menampung cluster Neptunus Anda. Subnet pribadi yang digunakan oleh fungsi Lambda konektor Neptunus harus memiliki rute ke internet melalui NAT Gateway ini. Fungsi Lambda konektor Neptunus menggunakan NAT Gateway untuk berkomunikasi dengannya. AWS Glue

Untuk petunjuk cara menyiapkan kluster Neptunus baru dan memuatnya dengan kumpulan data sampel, lihat Contoh Pengaturan Kluster [Neptunus](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/neptune-cluster-setup) di.com. GitHub

## Menyiapkan sebuah AWS Glue Data Catalog
<a name="connectors-neptune-setting-up-an-aws-glue-data-catalog"></a>

Tidak seperti penyimpanan data relasional tradisional, node dan tepi DB grafik Neptunus tidak menggunakan skema yang ditetapkan. Setiap entri dapat memiliki bidang dan tipe data yang berbeda. Namun, karena konektor Neptunus mengambil metadata dari, Anda harus membuat database AWS Glue Data Catalog yang memiliki tabel AWS Glue dengan skema yang diperlukan. Setelah Anda membuat AWS Glue database dan tabel, konektor dapat mengisi daftar tabel yang tersedia untuk kueri dari Athena.

### Mengaktifkan pencocokan kolom case insensitive
<a name="connectors-neptune-glue-case-insensitive-column-matching"></a>

Untuk menyelesaikan nama kolom dari tabel Neptunus Anda dengan casing yang benar bahkan ketika nama kolom semuanya lebih rendah, Anda dapat mengonfigurasi konektor Neptunus untuk AWS Glue pencocokan yang tidak peka huruf besar/kecil.

Untuk mengaktifkan fitur ini, atur variabel lingkungan fungsi konektor Neptunus Lambda ke. `enable_caseinsensitivematch` `true` 

### Menentukan parameter tabel AWS Glue glabel untuk nama tabel cased
<a name="connectors-neptune-glue-glabel-parameter-for-table-names"></a>

Karena hanya AWS Glue mendukung nama tabel huruf kecil, penting untuk menentukan parameter `glabel` AWS Glue tabel saat Anda membuat tabel untuk Neptunus dan nama AWS Glue tabel Neptunus Anda menyertakan casing. 

Dalam definisi AWS Glue tabel Anda, sertakan `glabel` parameter dan atur nilainya ke nama tabel Anda dengan casing aslinya. Ini memastikan bahwa casing yang benar dipertahankan saat AWS Glue berinteraksi dengan tabel Neptunus Anda. Contoh berikut menetapkan nilai `glabel` untuk nama tabel`Airport`.

```
glabel = Airport
```

![\[Mengatur properti glabel AWS Glue tabel untuk mempertahankan casing nama tabel untuk tabel Neptunus\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-neptune-1.png)


Untuk informasi selengkapnya tentang pengaturan AWS Glue Data Catalog untuk bekerja dengan Neptunus, [lihat AWS Glue Mengatur](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/aws-glue-sample-scripts) Katalog di.com. GitHub

## Performa
<a name="connectors-neptune-performance"></a>

Konektor Athena Neptunus melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. Namun, predikat yang menggunakan kunci utama mengakibatkan kegagalan kueri. `LIMIT`klausa mengurangi jumlah data yang dipindai, tetapi jika Anda tidak memberikan predikat, Anda harus mengharapkan `SELECT` kueri dengan `LIMIT` klausa untuk memindai setidaknya 16 MB data. Konektor Neptunus tahan terhadap pelambatan karena konkurensi.

## Kueri passthrough
<a name="connectors-neptune-passthrough-queries"></a>

[Konektor Neptunus mendukung kueri passthrough.](federated-query-passthrough.md) Anda dapat menggunakan fitur ini untuk menjalankan kueri Gremlin pada grafik properti dan menjalankan kueri SPARQL pada data RDF.

Untuk membuat kueri passthrough dengan Neptunus, gunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'database_name',
            COLLECTION => 'collection_name',
            QUERY => 'query_string'
        ))
```

Berikut contoh filter query passthrough Neptunus untuk bandara dengan kode. `ATL` Kutipan tunggal berlipat ganda adalah untuk melarikan diri.

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'graph-database',
            COLLECTION => 'airport',
            QUERY => 'g.V().has(''airport'', ''code'', ''ATL'').valueMap()' 
        ))
```

## Sumber daya tambahan
<a name="connectors-neptune-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune) GitHub di.com.

# Konektor Amazon Athena OpenSearch
<a name="connectors-opensearch"></a>

OpenSearch Layanan

 OpenSearch Konektor Amazon Athena memungkinkan Amazon Athena berkomunikasi dengan instans OpenSearch Anda sehingga Anda dapat menggunakan SQL untuk menanyakan data Anda. OpenSearch 

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

**catatan**  
Karena masalah yang diketahui, OpenSearch konektor tidak dapat digunakan dengan VPC.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan di harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

## Prasyarat
<a name="connectors-opensearch-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Ketentuan
<a name="connectors-opensearch-terms"></a>

Istilah-istilah berikut berhubungan dengan OpenSearch konektor.
+ **Domain** — Nama yang dihubungkan oleh konektor ini dengan titik akhir instans Anda OpenSearch . Domain juga digunakan sebagai nama database. Untuk OpenSearch instance yang ditentukan dalam OpenSearch Layanan Amazon, domain dapat ditemukan secara otomatis. Untuk contoh lain, Anda harus menyediakan pemetaan antara nama domain dan titik akhir.
+ **Indeks** — Tabel database yang didefinisikan dalam OpenSearch contoh Anda.
+ **Pemetaan** — Jika indeks adalah tabel database, maka pemetaan adalah skemanya (yaitu, definisi bidang dan atributnya).

  Konektor ini mendukung pengambilan metadata dari OpenSearch instance dan dari file. AWS Glue Data Catalog Jika konektor menemukan AWS Glue database dan tabel yang cocok dengan nama OpenSearch domain dan indeks Anda, konektor mencoba menggunakannya untuk definisi skema. Kami menyarankan Anda membuat AWS Glue tabel Anda sehingga merupakan superset dari semua bidang dalam OpenSearch indeks Anda.
+ **Dokumen** — Catatan dalam tabel database.
+ **Aliran data** — Data berbasis waktu yang terdiri dari beberapa indeks dukungan. Untuk informasi selengkapnya, lihat [Aliran data](https://opensearch.org/docs/latest/dashboards/im-dashboards/datastream/) dalam OpenSearch dokumentasi dan [Memulai aliran data di Panduan](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/data-streams.html#data-streams-example) *Pengembang OpenSearch Layanan Amazon*.
**catatan**  
Karena indeks aliran data dibuat dan dikelola secara internal oleh pencarian terbuka, konektor memilih pemetaan skema dari indeks pertama yang tersedia. Untuk alasan ini, kami sangat menyarankan untuk menyiapkan AWS Glue tabel sebagai sumber metadata tambahan. Untuk informasi selengkapnya, lihat [Menyiapkan database dan tabel di AWS Glue](#connectors-opensearch-setting-up-databases-and-tables-in-aws-glue). 

## Parameter
<a name="connectors-opensearch-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi OpenSearch konektor.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi lem (disarankan)
<a name="opensearch-gc"></a>

Kami menyarankan Anda mengkonfigurasi OpenSearch konektor dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan OpenSearch konektor Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type OPENSEARCH
```

**Properti lingkungan Lambda**
+  **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
 OpenSearch Konektor yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
 OpenSearch Konektor yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="opensearch-legacy"></a>
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **disable\$1glue** — (Opsional) Jika ada dan disetel ke true, konektor tidak mencoba untuk mengambil metadata tambahan dari. AWS Glue
+ **query\$1timeout\$1cluster** — Periode batas waktu, dalam hitungan detik, untuk kueri kesehatan klaster yang digunakan dalam pembuatan pemindaian paralel.
+ **query\$1timeout\$1search** — Periode batas waktu, dalam hitungan detik, untuk kueri penelusuran yang digunakan dalam pengambilan dokumen dari indeks.
+ **auto\$1discover\$1endpoint** — Boolean. Nilai default-nya `true`. Saat Anda menggunakan OpenSearch Layanan Amazon dan menyetel parameter ini ke true, konektor dapat secara otomatis menemukan domain dan titik akhir Anda dengan memanggil operasi API deskripsi atau daftar yang sesuai di Layanan. OpenSearch Untuk jenis OpenSearch instance lainnya (misalnya, di-host sendiri), Anda harus menentukan titik akhir domain terkait dalam variabel. `domain_mapping` Jika`auto_discover_endpoint=true`, konektor menggunakan AWS kredensil untuk mengautentikasi ke Layanan. OpenSearch Jika tidak, konektor mengambil nama pengguna dan kredenal kata sandi dari variabel AWS Secrets Manager . `domain_mapping`
+ **domain\$1mapping** - Digunakan hanya ketika `auto_discover_endpoint` disetel ke false dan mendefinisikan pemetaan antara nama domain dan titik akhir yang terkait. `domain_mapping`Variabel dapat mengakomodasi beberapa OpenSearch titik akhir dalam format berikut:

  ```
  domain1=endpoint1,domain2=endpoint2,domain3=endpoint3,...       
  ```

  Untuk tujuan otentikasi ke OpenSearch titik akhir, konektor mendukung string substitusi yang disuntikkan menggunakan format `${SecretName}` dengan nama pengguna dan kata sandi yang diambil dari. AWS Secrets Manager Rahasianya harus disimpan dalam format JSON berikut:

  ```
  { "username": "your_username", "password": "your_password" }
  ```

  Konektor akan secara otomatis mengurai struktur JSON ini untuk mengambil kredensialnya.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *

  Contoh berikut menggunakan `opensearch-creds` rahasia.

  ```
  movies=https://${opensearch-creds}:search-movies-ne...qu---us-east-1---es.amazonaws.com     
  ```

  Saat runtime, `${opensearch-creds}` dirender sebagai nama pengguna dan kata sandi, seperti pada contoh berikut.

  ```
  movies=https://myusername@mypassword:search-movies-ne...qu---us-east-1---es.amazonaws.com
  ```

  Dalam `domain_mapping` parameter, setiap pasangan domain-endpoint dapat menggunakan rahasia yang berbeda. Rahasia itu sendiri harus ditentukan dalam format *user\$1name* @*password*. Meskipun kata sandi mungkin berisi `@` tanda yang disematkan, yang pertama `@` berfungsi sebagai pemisah dari*user\$1name*.

  Penting juga untuk dicatat bahwa koma (,) dan tanda sama dengan (=) digunakan oleh konektor ini sebagai pemisah untuk pasangan domain-endpoint. Untuk alasan ini, Anda tidak boleh menggunakannya di mana pun di dalam rahasia yang disimpan.

## Menyiapkan database dan tabel di AWS Glue
<a name="connectors-opensearch-setting-up-databases-and-tables-in-aws-glue"></a>

Konektor memperoleh informasi metadata dengan menggunakan atau. AWS Glue OpenSearch Anda dapat mengatur AWS Glue tabel sebagai sumber definisi metadata tambahan. Untuk mengaktifkan fitur ini, tentukan AWS Glue database dan tabel yang cocok dengan domain dan indeks sumber yang Anda tambahkan. Konektor juga dapat memanfaatkan definisi metadata yang disimpan dalam OpenSearch instance dengan mengambil pemetaan untuk indeks yang ditentukan.

### Mendefinisikan metadata untuk array di OpenSearch
<a name="connectors-opensearch-defining-metadata-for-arrays-in-opensearch"></a>

OpenSearch tidak memiliki tipe data array khusus. Bidang apa pun dapat berisi nol atau lebih nilai asalkan memiliki tipe data yang sama. Jika ingin digunakan OpenSearch sebagai sumber definisi metadata, Anda harus menentukan `_meta` properti untuk semua indeks yang digunakan dengan Athena untuk bidang yang akan dianggap sebagai daftar atau larik. Jika Anda gagal menyelesaikan langkah ini, kueri hanya mengembalikan elemen pertama di bidang daftar. Saat Anda menentukan `_meta` properti, nama bidang harus sepenuhnya memenuhi syarat untuk struktur JSON bersarang (misalnya`address.street`, di mana `street` adalah bidang bersarang di dalam struktur). `address`

Contoh berikut mendefinisikan `actor` dan `genre` daftar dalam `movies` tabel.

```
PUT movies/_mapping 
{ 
  "_meta": { 
    "actor": "list", 
    "genre": "list" 
  } 
}
```

### Jenis Data
<a name="connectors-opensearch-data-types"></a>

 OpenSearch Konektor dapat mengekstrak definisi metadata dari salah satu AWS Glue atau instance. OpenSearch Konektor menggunakan pemetaan dalam tabel berikut untuk mengonversi definisi ke tipe data Apache Arrow, termasuk titik-titik yang dicatat di bagian berikut.


****  

| OpenSearch | Panah Apache | AWS Glue | 
| --- | --- | --- | 
| teks, kata kunci, biner | VARCHAR | string | 
| panjang | BIGINT | bigint | 
| scaled\$1float | BIGINT | SCALED\$1FLOAT (...) | 
| integer | INT | int | 
| pendek | SMALLINT | smallint | 
| byte | TINYINT | tinyint | 
| double | FLOAT8 | double | 
| mengapung, half\$1float | FLOAT4 | float | 
| boolean | BIT | boolean | 
| tanggal, date\$1nanos | DATEMILLI | timestamp | 
| Struktur JSON | STRUCT | STRUCT | 
| \$1meta (untuk informasi, lihat bagian[Mendefinisikan metadata untuk array di OpenSearch](#connectors-opensearch-defining-metadata-for-arrays-in-opensearch).) | DAFTAR | ARRAY | 

#### Catatan tentang tipe data
<a name="connectors-opensearch-data-type-considerations-and-limitations"></a>
+ Saat ini, konektor hanya mendukung OpenSearch dan AWS Glue tipe data yang tercantum dalam tabel sebelumnya.
+ A `scaled_float` adalah angka floating-point yang diskalakan oleh faktor penskalaan ganda tetap dan direpresentasikan sebagai dalam Apache Arrow. `BIGINT` Misalnya, 0,756 dengan faktor penskalaan 100 dibulatkan menjadi 76.
+ Untuk menentukan `scaled_float` in AWS Glue, Anda harus memilih jenis `array` kolom dan mendeklarasikan bidang menggunakan format SCALED\$1FLOAT (). *scaling\$1factor*

  Contoh-contoh berikut valid:

  ```
  SCALED_FLOAT(10.51) 
  SCALED_FLOAT(100) 
  SCALED_FLOAT(100.0)
  ```

  Contoh berikut tidak valid:

  ```
  SCALED_FLOAT(10.) 
  SCALED_FLOAT(.5)
  ```
+ Saat mengonversi dari `date_nanos` ke`DATEMILLI`, nanodetik dibulatkan ke milidetik terdekat. Nilai yang valid untuk `date` dan `date_nanos` termasuk, tetapi tidak terbatas pada, format berikut:

  ```
  "2020-05-18T10:15:30.123456789" 
  "2020-05-15T06:50:01.123Z" 
  "2020-05-15T06:49:30.123-05:00" 
  1589525370001 (epoch milliseconds)
  ```
+ An OpenSearch `binary` adalah representasi string dari nilai biner yang dikodekan menggunakan `Base64` dan dikonversi ke a. `VARCHAR`

## Menjalankan kueri SQL
<a name="connectors-opensearch-running-sql-queries"></a>

Berikut ini adalah contoh query DDL yang dapat Anda gunakan dengan konektor ini. Dalam contoh, *function\$1name* sesuai dengan nama fungsi Lambda Anda, *domain* adalah nama domain yang ingin Anda kueri, dan *index* merupakan nama indeks Anda.

```
SHOW DATABASES in `lambda:function_name`
```

```
SHOW TABLES in `lambda:function_name`.domain
```

```
DESCRIBE `lambda:function_name`.domain.index
```

## Performa
<a name="connectors-opensearch-performance"></a>

 OpenSearch Konektor Athena mendukung pemindaian paralel berbasis shard. Konektor menggunakan informasi kesehatan cluster yang diambil dari OpenSearch instance untuk menghasilkan beberapa permintaan untuk kueri penelusuran dokumen. Permintaan dibagi untuk setiap pecahan dan dijalankan secara bersamaan.

Konektor juga menekan predikat sebagai bagian dari permintaan pencarian dokumennya. Contoh query berikut dan predikat menunjukkan bagaimana konektor menggunakan predikat push down.

**Kueri**

```
SELECT * FROM "lambda:elasticsearch".movies.movies 
WHERE year >= 1955 AND year <= 1962 OR year = 1996
```

**Predikat**

```
(_exists_:year) AND year:([1955 TO 1962] OR 1996)
```

## Kueri passthrough
<a name="connectors-opensearch-passthrough-queries"></a>

 OpenSearch Konektor mendukung [kueri passthrough](federated-query-passthrough.md) dan menggunakan bahasa Query DSL. Untuk informasi selengkapnya tentang kueri dengan Query DSL, lihat [Kueri DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html) di dokumentasi Elasticsearch atau [Query](https://opensearch.org/docs/latest/query-dsl/) DSL dalam dokumentasi. OpenSearch 

Untuk menggunakan kueri passthrough dengan OpenSearch konektor, gunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            schema => 'schema_name',
            index => 'index_name',
            query => "{query_string}"
        ))
```

 OpenSearch Contoh filter kueri passthrough berikut untuk karyawan dengan status pekerjaan aktif dalam `employee` indeks `default` skema.

```
SELECT * FROM TABLE(
        system.query(
            schema => 'default',
            index => 'employee',
            query => "{ ''bool'':{''filter'':{''term'':{''status'': ''active''}}}}"
        ))
```

## Sumber daya tambahan
<a name="connectors-opensearch-additional-resources"></a>
+ *Untuk artikel tentang penggunaan OpenSearch konektor Amazon Athena untuk menanyakan data di OpenSearch Layanan Amazon dan Amazon S3 dalam satu kueri, [lihat Kueri data di Layanan Amazon menggunakan SQL dari OpenSearch Amazon Athena](https://aws.amazon.com/blogs/big-data/query-data-in-amazon-opensearch-service-using-sql-from-amazon-athena/) di Blog Big Data.AWS *
+ Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-elasticsearch) GitHub di.com.

# Konektor Amazon Athena Oracle
<a name="connectors-oracle"></a>

Konektor Amazon Athena untuk Oracle memungkinkan Amazon Athena menjalankan kueri SQL pada data yang disimpan di Oracle yang berjalan di lokasi atau di Amazon EC2 atau Amazon RDS. Anda juga dapat menggunakan konektor untuk menanyakan data pada [Oracle exadata](https://www.oracle.com/engineered-systems/exadata/).

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-oracle-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-oracle-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Hanya versi 12.1.0.2 Oracle Database yang didukung.
+ Jika konektor Oracle tidak menggunakan koneksi Glue, nama database, tabel, dan kolom akan dikonversi ke huruf besar oleh konektor. 

  Jika konektor Oracle menggunakan koneksi Glue, database, tabel, dan nama kolom tidak akan default ke huruf besar oleh konektor. Untuk mengubah perilaku casing ini, ubah Lambda menurut variabel lingkungan `casing_mode` menjadi `upper` atau `lower` sesuai kebutuhan.

   Konektor Oracle yang menggunakan koneksi Glue tidak mendukung penggunaan handler Multiplexing.
+ Saat Anda menggunakan Oracle `NUMBER` tanpa Precision dan Scale yang ditentukan, Athena memperlakukan ini sebagai. `BIGINT` Untuk mendapatkan tempat desimal yang diperlukan di Athena, tentukan variabel lingkungan Lambda `default_scale=<number of decimal places>` Anda.

## Ketentuan
<a name="connectors-oracle-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Oracle.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-oracle-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Oracle.

### Koneksi lem (disarankan)
<a name="oracle-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor Oracle dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Oracle Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type ORACLE
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 
+ **is\$1fips\$1enabled** - (Opsional) Setel ke true saat mode FIPS diaktifkan. Default-nya adalah salah.
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait.
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel. Ini adalah default untuk konektor yang tidak memiliki koneksi lem terkait.
  + **case\$1insensitive\$1search — Lakukan pencarian** case insensitive terhadap skema dan nama tabel di Oracle. Gunakan nilai ini jika kueri Anda berisi skema atau nama tabel yang tidak cocok dengan casing default untuk konektor Anda.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor Oracle yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Oracle yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="oracle-legacy"></a>

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue 

Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat tanpa koneksi Glue terkait. Gunakan parameter berikut hanya jika Anda [menggunakan versi sebelumnya dari konektor sumber data Athena secara manual](connect-data-source-serverless-app-repo.md) atau saat `glue_connection` properti lingkungan tidak ditentukan.

**Properti lingkungan Lambda**
+ **default** - String koneksi JDBC yang digunakan untuk terhubung ke instance database Oracle. Sebagai contoh, `oracle://${jdbc_connection_string}`.
+ **catalog\$1connection\$1string** - Digunakan oleh handler Multiplexing (tidak didukung saat menggunakan sambungan lem). Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog yang terdaftar di Athena adalah myoraclecatalog, maka nama variabel lingkungan adalah myoraclecatalog\$1connection\$1string.
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **is\$1fips\$1enabled** - (Opsional) Setel ke true saat mode FIPS diaktifkan. Default-nya adalah salah.
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait.
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel. Ini adalah default untuk konektor yang tidak memiliki koneksi lem terkait.
  + **case\$1insensitive\$1search — Lakukan pencarian** case insensitive terhadap skema dan nama tabel di Oracle. Gunakan nilai ini jika kueri Anda berisi skema atau nama tabel yang tidak cocok dengan casing default untuk konektor Anda.

#### String koneksi
<a name="connectors-oracle-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
oracle://${jdbc_connection_string}
```

**catatan**  
Jika kata sandi Anda berisi karakter khusus (misalnya,`some.password`), lampirkan kata sandi Anda dalam tanda kutip ganda saat Anda meneruskannya ke string koneksi (misalnya,`"some.password"`). Kegagalan untuk melakukannya dapat mengakibatkan kesalahan yang ditentukan URL Oracle Tidak Valid.

#### Menggunakan handler koneksi tunggal
<a name="connectors-oracle-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance Oracle.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Pawang komposit | OracleCompositeHandler | 
| Penangan metadata | OracleMetadataHandler | 
| Rekam handler | OracleRecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-oracle-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 
| IsFIPSEnabled | Tidak wajib. Setel ke true saat mode FIPS diaktifkan. Nilai default-nya false.  | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Konektor mendukung koneksi berbasis SSL ke instans Amazon RDS. Support terbatas pada protokol Transport Layer Security (TLS) dan otentikasi server oleh klien. Otentikasi timbal balik itu tidak didukung di Amazon RDS. Baris kedua dalam tabel di bawah ini menunjukkan sintaks untuk menggunakan SSL.

Properti contoh berikut adalah untuk satu contoh Oracle didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle\$1@//hostname:port/servicename | 
|  | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle\$1@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS) (HOST=<HOST\$1NAME>)(PORT=))(CONNECT\$1DATA=(SID=))(SECURITY=(SSL\$1SERVER\$1CERT\$1DN=))) | 

#### Memberikan kredensi
<a name="connectors-oracle-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensyal hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**catatan**  
Jika kata sandi Anda berisi karakter khusus (misalnya,`some.password`), lampirkan kata sandi Anda dalam tanda kutip ganda saat Anda menyimpannya di Secrets Manager (misalnya,`"some.password"`). Kegagalan untuk melakukannya dapat mengakibatkan kesalahan yang ditentukan URL Oracle Tidak Valid.

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${Test/RDS/Oracle}`.

```
oracle://jdbc:oracle:thin:${Test/RDS/Oracle}@//hostname:port/servicename 
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
oracle://jdbc:oracle:thin:username/password@//hostname:port/servicename
```

Saat ini, konektor Oracle mengenali properti `UID` dan `PWD` JDBC.

#### Menggunakan handler multiplexing
<a name="connectors-oracle-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Pawang komposit | OracleMuxCompositeHandler | 
| Penangan metadata | OracleMuxMetadataHandler | 
| Rekam handler | OracleMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-oracle-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmyoraclecatalog, maka nama variabel lingkungan adalah. myoraclecatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Oracle MUX Lambda yang mendukung dua instance database: `oracle1` (default), dan. `oracle2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle1\$1@//oracle1.hostname:port/servicename | 
| oracle\$1catalog1\$1connection\$1string | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle1\$1@//oracle1.hostname:port/servicename | 
| oracle\$1catalog2\$1connection\$1string | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle2\$1@//oracle2.hostname:port/servicename | 

## Dukungan tipe data
<a name="connectors-oracle-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC, Oracle, dan Arrow.


****  

| JDBC | Oracle | Panah | 
| --- | --- | --- | 
| Boolean | boolean | Bit | 
| Bilangan Bulat | N/A | Kecil | 
| Pendek | smallint | Kecil | 
| Bilangan Bulat | integer | Int | 
| Panjang | bigint | Bigint | 
| float | mengapung4 | Mengapung4 | 
| Ganda | mengapung8 | Mengapung8 | 
| Date | tanggal | DateDay | 
| Stempel waktu | timestamp | DateMilli | 
| String | text | Varchar | 
| Byte | byte | Varbiner | 
| BigDecimal | numeric(p,s) | Decimal | 
| ARRAY | N/A (lihat catatan) | Daftar | 

## Partisi dan split
<a name="connectors-oracle-partitions-and-splits"></a>

Partisi digunakan untuk menentukan cara menghasilkan split untuk konektor. Athena membangun kolom sintetis tipe `varchar` yang mewakili skema partisi untuk tabel untuk membantu konektor menghasilkan split. Konektor tidak mengubah definisi tabel yang sebenarnya.

## Performa
<a name="connectors-oracle-performance"></a>

Oracle mendukung partisi asli. Konektor Athena Oracle dapat mengambil data dari partisi ini secara paralel. Jika Anda ingin menanyakan kumpulan data yang sangat besar dengan distribusi partisi yang seragam, partisi asli sangat disarankan. Memilih subset kolom secara signifikan mempercepat runtime kueri dan mengurangi data yang dipindai. Konektor Oracle tahan terhadap pelambatan karena konkurensi. Namun, runtime kueri cenderung panjang.

Konektor Athena Oracle melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. Predikat sederhana dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri. 

### Predikat
<a name="connectors-oracle-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena Oracle dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Oracle untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena Oracle berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-oracle-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Kueri passthrough
<a name="connectors-oracle-passthrough-queries"></a>

Konektor Oracle mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Oracle, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di Oracle. Query memilih semua kolom dalam `customer` tabel.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer'
        ))
```

## Informasi lisensi
<a name="connectors-oracle-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-oracle-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/pom.xml) untuk konektor Oracle di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-oracle) GitHub di.com.

# Konektor Amazon Athena PostgreSQL
<a name="connectors-postgresql"></a>

Konektor Amazon Athena PostgreSQL memungkinkan Athena mengakses database PostgreSQL Anda.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-postgres-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-postgresql-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Seperti PostgreSQL, Athena memperlakukan spasi tambahan dalam tipe `CHAR` PostgreSQL secara semantik tidak signifikan untuk tujuan panjang dan perbandingan. Perhatikan bahwa ini hanya berlaku untuk `CHAR` tetapi tidak untuk `VARCHAR` tipe. Athena mengabaikan spasi tambahan untuk `CHAR` tipe tersebut, tetapi memperlakukannya sebagai hal yang signifikan untuk jenisnya. `VARCHAR`
+ Bila Anda menggunakan tipe data string karakter case-insensitive [citext](https://www.postgresql.org/docs/current/citext.html), PostgreSQL menggunakan perbandingan data case insensitive yang berbeda dari Athena. Perbedaan ini menciptakan perbedaan data selama operasi SQL`JOIN`. Untuk mengatasi masalah ini, gunakan fitur kueri passthrough konektor PostgreSQL. Untuk informasi selengkapnya, lihat bagian [kueri passthrough](#connectors-postgres-passthrough-queries) nanti di dokumen ini. 

## Ketentuan
<a name="connectors-postgresql-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor PostgreSQL.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-postgresql-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor PostgreSQL.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue 

### Koneksi Glue (disarankan)
<a name="connectors-postgresql-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor PostgreSQL dengan menggunakan objek koneksi Glue. 

Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor PostgreSQL Lambda ke nama koneksi Glue yang akan digunakan.

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type POSTGRESQL
```

**Properti lingkungan Lambda**

**glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor PostgreSQL yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor PostgreSQL yang dibuat menggunakan koneksi Glue hanya mendukung 2. `ConnectionSchemaVersion`

### Koneksi warisan
<a name="connectors-postgresql-connection-legacy"></a>

Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat tanpa koneksi Glue terkait. Gunakan parameter berikut hanya jika Anda [menggunakan versi sebelumnya dari konektor sumber data Athena secara manual](connect-data-source-serverless-app-repo.md) atau saat `glue_connection` properti lingkungan tidak ditentukan.

#### String koneksi
<a name="connectors-postgresql-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
postgres://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-postgresql-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | PostGreSqlMuxCompositeHandler | 
| Penangan metadata | PostGreSqlMuxMetadataHandler | 
| Rekam handler | PostGreSqlMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-postgresql-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmypostgrescatalog, maka nama variabel lingkungan adalah. mypostgrescatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi PostGreSql MUX Lambda yang mendukung dua instance database`postgres1`: (default), dan. `postgres2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | postgres://jdbc:postgresql://postgres1.host:5432/default?\$1\$1Test/RDS/PostGres1\$1 | 
| postgres\$1catalog1\$1connection\$1string | postgres://jdbc:postgresql://postgres1.host:5432/default?\$1\$1Test/RDS/PostGres1\$1 | 
| postgres\$1catalog2\$1connection\$1string | postgres://jdbc:postgresql://postgres2.host:5432/default?user=sample&password=sample | 

##### Memberikan kredensi
<a name="connectors-postgresql-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${Test/RDS/PostGres1}`.

```
postgres://jdbc:postgresql://postgres1.host:5432/default?...&${Test/RDS/PostGres1}&...
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
postgres://jdbc:postgresql://postgres1.host:5432/default?...&user=sample2&password=sample2&...
```

Saat ini, konektor PostgreSQL mengenali properti dan JDBC. `user` `password`

##### Mengaktifkan SSL
<a name="connectors-postgresql-ssl"></a>

Untuk mendukung SSL dalam koneksi PostgreSQL Anda, tambahkan yang berikut ini ke string koneksi Anda:

```
&sslmode=verify-ca&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory
```

**Contoh**  
Contoh string koneksi berikut tidak menggunakan SSL.

```
postgres://jdbc:postgresql://example-asdf-aurora-postgres-endpoint:5432/asdf?user=someuser&password=somepassword
```

Untuk mengaktifkan SSL, ubah string sebagai berikut.

```
postgres://jdbc:postgresql://example-asdf-aurora-postgres-endpoint:5432/asdf?user=someuser&password=somepassword&sslmode=verify-ca&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory
```

#### Menggunakan handler koneksi tunggal
<a name="connectors-postgresql-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance PostgreSQL.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | PostGreSqlCompositeHandler | 
| Penangan metadata | PostGreSqlMetadataHandler | 
| Rekam handler | PostGreSqlRecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-postgresql-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk instance PostgreSQL tunggal yang didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | postgres://jdbc:postgresql://postgres1.host:5432/default?secret=\$1\$1Test/RDS/PostgreSQL1\$1 | 

#### Parameter tumpahan
<a name="connectors-postgresql-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-postgresql-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC, PostGre SQL, dan Arrow.


****  

| JDBC | PostGreSQL | Panah | 
| --- | --- | --- | 
| Boolean | Boolean | Bit | 
| Bilangan Bulat | N/A | Mungil | 
| Pendek | smallint | berkulit kecil | 
| Bilangan Bulat | integer | Int | 
| Panjang | bigint | Bigint | 
| float | mengapung4 | Mengapung4 | 
| Ganda | mengapung8 | Mengapung8 | 
| Date | tanggal | DateDay | 
| Stempel waktu | timestamp | DateMilli | 
| String | text | Varchar | 
| Byte | byte | Varbiner | 
| BigDecimal | numeric(p,s) | Decimal | 
| ARRAY | N/A (lihat catatan) | Daftar | 

**catatan**  
`ARRAY`Tipe ini didukung untuk konektor PostgreSQL dengan batasan berikut: Array multidimensi (atau array bersarang) tidak didukung. `<data_type>[][]` Kolom dengan `ARRAY` tipe data yang tidak didukung dikonversi ke array elemen string (). `array<varchar>`

## Partisi dan split
<a name="connectors-postgresql-partitions-and-splits"></a>

Partisi digunakan untuk menentukan cara menghasilkan split untuk konektor. Athena membangun kolom sintetis tipe `varchar` yang mewakili skema partisi untuk tabel untuk membantu konektor menghasilkan split. Konektor tidak mengubah definisi tabel yang sebenarnya.

## Performa
<a name="connectors-postgresql-performance"></a>

PostgreSQL mendukung partisi asli. Konektor PostgreSQL Athena dapat mengambil data dari partisi ini secara paralel. Jika Anda ingin menanyakan kumpulan data yang sangat besar dengan distribusi partisi yang seragam, partisi asli sangat disarankan.

Konektor PostgreSQL Athena melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa, predikat sederhana, dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri. Namun, memilih subset kolom terkadang menghasilkan runtime eksekusi kueri yang lebih lama.

### Klausul LIMIT
<a name="connectors-postgres-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Predikat
<a name="connectors-postgres-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor PostgreSQL Athena dapat menggabungkan ekspresi ini dan mendorongnya langsung ke PostgreSQL untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena PostgreSQL berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-postgres-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Kueri passthrough
<a name="connectors-postgres-passthrough-queries"></a>

[Konektor PostgreSQL mendukung kueri passthrough.](federated-query-passthrough.md) Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan PostgreSQL, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di PostgreSQL. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Sumber daya tambahan
<a name="connectors-postgresql-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-postgresql/pom.xml) untuk konektor PostgreSQL di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-postgresql) GitHub di.com.

# Konektor Amazon Athena Redis OSS
<a name="connectors-redis"></a>

Konektor Amazon Athena Redis OSS memungkinkan Amazon Athena berkomunikasi dengan instans Redis OSS Anda sehingga Anda dapat menanyakan data Redis OSS Anda dengan SQL. Anda dapat menggunakan AWS Glue Data Catalog untuk memetakan pasangan nilai kunci Redis OSS Anda ke dalam tabel virtual.

Tidak seperti penyimpanan data relasional tradisional, Redis OSS tidak memiliki konsep tabel atau kolom. Sebaliknya, Redis OSS menawarkan pola akses kunci-nilai di mana kunci pada dasarnya adalah a `string` dan nilainya adalah,, atau`string`. `z-set` `hmap`

Anda dapat menggunakan AWS Glue Data Catalog untuk membuat skema dan mengkonfigurasi tabel virtual. Properti tabel khusus memberi tahu konektor Athena Redis OSS cara memetakan kunci dan nilai Redis OSS Anda ke dalam tabel. Untuk informasi selengkapnya, lihat [Menyiapkan database dan tabel di AWS Glue](#connectors-redis-setting-up-databases-and-tables-in-glue) nanti dalam dokumen ini.

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

Konektor Amazon Athena Redis OSS mendukung Amazon MemoryDB dan Amazon (Redis OSS). ElastiCache 

## Prasyarat
<a name="connectors-redis-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).
+ Siapkan VPC dan grup keamanan sebelum Anda menggunakan konektor ini. Untuk informasi selengkapnya, lihat [Buat VPC untuk konektor atau koneksi sumber data AWS Glue](athena-connectors-vpc-creation.md).

## Parameter
<a name="connectors-redis-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Redis.
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **glue\$1catalog** [- (Opsional) Gunakan opsi ini untuk menentukan katalog lintas akun. AWS Glue](data-sources-glue-cross-account.md) Secara default, konektor mencoba untuk mendapatkan metadata dari akunnya sendiri AWS Glue .

## Menyiapkan database dan tabel di AWS Glue
<a name="connectors-redis-setting-up-databases-and-tables-in-glue"></a>

Untuk mengaktifkan AWS Glue tabel untuk digunakan dengan Redis OSS, Anda dapat mengatur properti tabel berikut pada tabel:`redis-endpoint`,`redis-value-type`, dan salah satu atau`redis-keys-zset`. `redis-key-prefix`

Selain itu, setiap AWS Glue database yang berisi tabel Redis OSS harus memiliki `redis-db-flag` properti URI database. Untuk menyetel properti `redis-db-flag` URI, gunakan AWS Glue konsol untuk mengedit database.

Daftar berikut menjelaskan properti tabel.
+ **redis-endpoint** — (Wajib) Server Redis OSS yang berisi data untuk tabel ini (misalnya,`athena-federation-demo.cache.amazonaws.com:6379`) Atau, Anda dapat menyimpan titik akhir, atau bagian dari titik akhir, AWS Secrets Manager dengan menggunakan \$1 \$1\$1 *Secret\$1Name* sebagai nilai properti tabel. *hostname* `:` *port* `:` *password*

**catatan**  
[Untuk menggunakan fitur Kueri Federasi Athena, VPC yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager. AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)
+ **redis-keys-zset**— (Diperlukan jika tidak `redis-key-prefix` digunakan) Daftar kunci yang dipisahkan koma yang nilainya adalah [zset](https://redis.com/ebook/part-2-core-concepts/chapter-3-commands-in-redis/3-5-sorted-sets/) (misalnya,). `active-orders,pending-orders` Masing-masing nilai dalam zset diperlakukan sebagai kunci yang merupakan bagian dari tabel. Baik `redis-keys-zset` properti atau `redis-key-prefix` properti harus ditetapkan.
+ **redis-key-prefix**— (Diperlukan jika `redis-keys-zset` tidak digunakan) Daftar awalan kunci yang dipisahkan koma untuk memindai nilai dalam tabel (misalnya,). `accounts-*,acct-` Baik `redis-key-prefix` properti atau `redis-keys-zset` properti harus ditetapkan.
+ **redis-value-type**— (Wajib) Mendefinisikan bagaimana nilai untuk kunci didefinisikan oleh salah satu `redis-key-prefix` atau `redis-keys-zset` dipetakan ke tabel Anda. Sebuah peta literal ke satu kolom. Sebuah zset juga memetakan ke satu kolom, tetapi setiap tombol dapat menyimpan banyak baris. Sebuah hash memungkinkan setiap kunci menjadi baris dengan beberapa kolom (misalnya, hash, literal, atau zset.)
+ **redis-ssl-flag**— (Opsional) Saat`True`, membuat koneksi Redis yang menggunakan SSL/TLS. Nilai default-nya `False`.
+ **redis-cluster-flag**— (Opsional) Kapan`True`, aktifkan dukungan untuk instance Redis yang dikelompokkan. Nilai default-nya `False`.
+ **redis-db-number**— (Opsional) Hanya berlaku untuk instance mandiri dan tidak berkerumun.) Tetapkan nomor ini (misalnya 1, 2, atau 3) untuk dibaca dari database Redis non-default. Defaultnya adalah database logis Redis 0. Nomor ini tidak merujuk ke database di Athena atau AWS Glue, tetapi ke database logis Redis. Untuk informasi selengkapnya, lihat [INDEKS SELECT](https://redis.io/commands/select) dalam dokumentasi Redis.

## Jenis Data
<a name="connectors-redis-data-types"></a>

Konektor Redis OSS mendukung tipe data berikut. Aliran Redis OSS tidak didukung.
+ [Tali](https://redis.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/1-2-1-strings-in-redis/)
+ [Hash](https://redis.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/1-2-4-hashes-in-redis/)
+ Set Diurutkan () [ZSet](https://redis.com/ebook/part-2-core-concepts/chapter-3-commands-in-redis/3-5-sorted-sets/)

Semua nilai Redis OSS diambil sebagai tipe data. `string` Kemudian mereka dikonversi ke salah satu tipe data Apache Arrow berikut berdasarkan bagaimana tabel Anda didefinisikan dalam AWS Glue Data Catalog.


****  

| AWS Glue tipe data | Tipe data Apache Arrow | 
| --- | --- | 
| int | INT | 
| string | VARCHAR | 
| bigint | BIGINT | 
| double | FLOAT8 | 
| float | FLOAT4 | 
| smallint | SMALLINT | 
| tinyint | TINYINT | 
| boolean | BIT | 
| biner | VARBINARY | 

## Izin yang Diperlukan
<a name="connectors-redis-required-permissions"></a>

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian file [athena-redis.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-redis/athena-redis.yaml). Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
+ **AWS Glue Data Catalog**— Konektor Redis memerlukan akses baca saja ke AWS Glue Data Catalog untuk mendapatkan informasi skema.
+ **CloudWatch Log** — Konektor memerlukan akses ke CloudWatch Log untuk menyimpan log.
+ **AWS Secrets Manager akses baca** - Jika Anda memilih untuk menyimpan detail titik akhir Redis di Secrets Manager, Anda harus memberikan akses konektor ke rahasia tersebut.
+ **Akses VPC** — Konektor memerlukan kemampuan untuk memasang dan melepaskan antarmuka ke VPC Anda sehingga dapat terhubung dengannya dan berkomunikasi dengan instans Redis Anda.

## Performa
<a name="connectors-redis-performance"></a>

Konektor Athena Redis OSS mencoba untuk memparalelkan kueri terhadap instance Redis OSS Anda sesuai dengan jenis tabel yang telah Anda tentukan (misalnya, kunci zset atau kunci awalan).

Konektor Athena Redis melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. Namun, kueri yang berisi predikat terhadap kunci utama gagal dengan batas waktu. `LIMIT`klausa mengurangi jumlah data yang dipindai, tetapi jika Anda tidak memberikan predikat, Anda harus mengharapkan `SELECT` kueri dengan `LIMIT` klausa untuk memindai setidaknya 16 MB data. Konektor Redis tahan terhadap pelambatan karena konkurensi.

## Kueri passthrough
<a name="connectors-redis-passthrough-queries"></a>

Konektor Redis mendukung kueri [passthrough](federated-query-passthrough.md). Anda dapat menggunakan fitur ini untuk menjalankan kueri yang menggunakan skrip Lua pada database Redis. 

Untuk membuat kueri passthrough dengan Redis, gunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.script(
            script => 'return redis.[call|pcall](query_script)',
            keys => '[key_pattern]',
            argv => '[script_arguments]'
))
```

Contoh berikut menjalankan skrip Lua untuk mendapatkan nilai pada kunci`l:a`.

```
SELECT * FROM TABLE(
        system.script(
            script => 'return redis.call("GET", KEYS[1])',
            keys => '[l:a]',
            argv => '[]'
))
```

## Informasi lisensi
<a name="connectors-redis-license-information"></a>

[Proyek konektor Amazon Athena Redis dilisensikan di bawah Lisensi Apache-2.0.](https://www.apache.org/licenses/LICENSE-2.0.html)

## Sumber daya tambahan
<a name="connectors-redis-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-redis) GitHub di.com.

# Konektor Pergeseran Merah Amazon Athena
<a name="connectors-redshift"></a>

Konektor Amazon Athena Redshift memungkinkan Amazon Athena mengakses database Amazon Redshift dan Amazon Redshift Serverless Anda, termasuk tampilan Redshift Tanpa Server. Anda dapat terhubung ke salah satu layanan menggunakan pengaturan konfigurasi string koneksi JDBC yang dijelaskan di halaman ini.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-redshift-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-redshift-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Karena Redshift tidak mendukung partisi eksternal, semua data yang ditentukan oleh kueri diambil setiap saat.
+ Seperti Redshift, Athena memperlakukan ruang belakang dalam tipe `CHAR` Redshift sebagai semantik tidak signifikan untuk panjang dan tujuan perbandingan. Perhatikan bahwa ini hanya berlaku untuk `CHAR` tetapi tidak untuk `VARCHAR` tipe. Athena mengabaikan spasi tambahan untuk `CHAR` tipe tersebut, tetapi memperlakukannya sebagai hal yang signifikan untuk jenisnya. `VARCHAR`

## Ketentuan
<a name="connectors-redshift-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Redshift.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-redshift-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Redshift.

### Koneksi lem (disarankan)
<a name="redshift-gc"></a>

Kami menyarankan Anda mengonfigurasi konektor Redshift dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Amazon Redshift Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type REDSHIFT
```

**Properti lingkungan Lambda**

**glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor Redshift yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Redshift yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="redshift-legacy"></a>

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue 

Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat tanpa koneksi Glue terkait. Gunakan parameter berikut hanya jika Anda [menggunakan versi sebelumnya dari konektor sumber data Athena secara manual](connect-data-source-serverless-app-repo.md) atau saat `glue_connection` properti lingkungan tidak ditentukan.

**Properti lingkungan Lambda**
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **disable\$1glue** — (Opsional) Jika ada dan disetel ke true, konektor tidak mencoba untuk mengambil metadata tambahan dari. AWS Glue
+ **glue\$1catalog** [- (Opsional) Gunakan opsi ini untuk menentukan katalog lintas akun. AWS Glue](data-sources-glue-cross-account.md) Secara default, konektor mencoba untuk mendapatkan metadata dari akunnya sendiri AWS Glue .

#### String koneksi
<a name="connectors-redshift-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
redshift://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-redshift-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Pawang komposit | RedshiftMuxCompositeHandler | 
| Penangan metadata | RedshiftMuxMetadataHandler | 
| Rekam handler | RedshiftMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-redshift-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmyredshiftcatalog, maka nama variabel lingkungan adalah. myredshiftcatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Redshift MUX Lambda yang mendukung dua instance database`redshift1`: (default), dan. `redshift2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | redshift://jdbc:redshift://redshift1.host:5439/dev?user=sample2&password=sample2 | 
| redshift\$1catalog1\$1connection\$1string | redshift://jdbc:redshift://redshift1.host:3306/default?\$1\$1Test/RDS/Redshift1\$1 | 
| redshift\$1catalog2\$1connection\$1string | redshift://jdbc:redshift://redshift2.host:3333/default?user=sample2&password=sample2 | 

##### Memberikan kredensi
<a name="connectors-redshift-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia \$1 \$1test/rds/`Redshift1`\$1.

```
redshift://jdbc:redshift://redshift1.host:3306/default?...&${Test/RDS/Redshift1}&...
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
redshift://jdbc:redshift://redshift1.host:3306/default?...&user=sample2&password=sample2&...
```

Saat ini, konektor Redshift mengenali properti `user` dan `password` JDBC.

## Dukungan tipe data
<a name="connectors-redshift-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC dan Apache Arrow.


****  

| JDBC | Panah | 
| --- | --- | 
| Boolean | Bit | 
| Bilangan Bulat | Mungil | 
| Pendek | orang kecil | 
| Bilangan Bulat | Int | 
| Panjang | Bigint | 
| float | Mengapung4 | 
| Ganda | Mengapung8 | 
| Date | DateDay | 
| Stempel waktu | DateMilli | 
| String | Varchar | 
| Byte | Varbiner | 
| BigDecimal | Decimal | 
| ARRAY | Daftar | 

## Partisi dan split
<a name="connectors-redshift-partitions-and-splits"></a>

Redshift tidak mendukung partisi eksternal. Untuk informasi tentang masalah terkait kinerja, lihat[Performa](#connectors-redshift-performance).

## Performa
<a name="connectors-redshift-performance"></a>

Konektor Athena Redshift melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa, `ORDER BY` klausa, predikat sederhana, dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri. Namun, memilih subset kolom terkadang menghasilkan runtime eksekusi kueri yang lebih lama. Amazon Redshift sangat rentan terhadap perlambatan eksekusi kueri saat Anda menjalankan beberapa kueri secara bersamaan.

### Klausul LIMIT
<a name="connectors-redshift-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Kueri N teratas
<a name="connectors-redshift-performance-top-n-queries"></a>

`N`Kueri teratas menentukan urutan set hasil dan batas jumlah baris yang dikembalikan. Anda dapat menggunakan jenis kueri ini untuk menentukan nilai `N` maks teratas atau nilai `N` min teratas untuk kumpulan data Anda. Dengan `N` pushdown atas, konektor hanya mengembalikan baris yang `N` dipesan ke Athena.

### Predikat
<a name="connectors-redshift-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena Redshift dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Redshift untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena Redshift berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-redshift-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
ORDER BY col_a DESC 
LIMIT 10;
```

*Untuk artikel tentang penggunaan pushdown predikat untuk meningkatkan kinerja dalam kueri federasi, termasuk Amazon Redshift, lihat [Meningkatkan kueri federasi dengan pushdown predikat di](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) Amazon Athena di Blog Big Data.AWS *

## Kueri passthrough
<a name="connectors-redshift-passthrough-queries"></a>

Konektor Redshift mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Redshift, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh kueri berikut mendorong kueri ke sumber data di Redshift. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Sumber daya tambahan
<a name="connectors-redshift-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-redshift/pom.xml) untuk konektor Redshift di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-redshift) GitHub di.com.

# Konektor Amazon Athena SAP HANA
<a name="connectors-sap-hana"></a>

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-saphana-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-sap-hana-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Dalam SAP HANA, nama objek dikonversi ke huruf besar ketika mereka disimpan dalam database SAP HANA. Namun, karena nama dalam tanda kutip peka huruf besar/kecil, dimungkinkan untuk dua tabel memiliki nama yang sama dalam huruf kecil dan huruf besar (misalnya, `EMPLOYEE` dan`employee`).

  Di Athena Federated Query, nama tabel skema disediakan untuk fungsi Lambda dalam huruf kecil. Untuk mengatasi masalah ini, Anda dapat memberikan petunjuk `@schemaCase` kueri untuk mengambil data dari tabel yang memiliki nama peka huruf besar/kecil. Berikut ini adalah dua contoh query dengan petunjuk query.

  ```
  SELECT * 
  FROM "lambda:saphanaconnector".SYSTEM."MY_TABLE@schemaCase=upper&tableCase=upper"
  ```

  ```
  SELECT * 
  FROM "lambda:saphanaconnector".SYSTEM."MY_TABLE@schemaCase=upper&tableCase=lower"
  ```

## Ketentuan
<a name="connectors-sap-hana-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor SAP HANA.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-sap-hana-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor SAP HANA.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi Glue (disarankan)
<a name="connectors-sap-hana-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor SAP HANA dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor SAP HANA Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type SAPHANA
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **none** — Jangan mengubah kasus skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait. 
  + **atas** - Huruf besar semua skema dan nama tabel yang diberikan.
  + **lebih rendah** - Huruf kecil semua skema dan nama tabel yang diberikan.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensi.
Konektor SAP HANA yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor SAP HANA yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-sap-hana-legacy"></a>

#### String koneksi
<a name="connectors-sap-hana-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
saphana://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-sap-hana-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | SaphanaMuxCompositeHandler | 
| Penangan metadata | SaphanaMuxMetadataHandler | 
| Rekam handler | SaphanaMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-sap-hana-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmysaphanacatalog, maka nama variabel lingkungan adalah. mysaphanacatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Saphana MUX Lambda yang mendukung dua instance database: `saphana1` (default), dan. `saphana2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | saphana://jdbc:sap://saphana1.host:port/?\$1\$1Test/RDS/ Saphana1\$1 | 
| saphana\$1catalog1\$1connection\$1string | saphana://jdbc:sap://saphana1.host:port/?\$1\$1Test/RDS/ Saphana1\$1 | 
| saphana\$1catalog2\$1connection\$1string | saphana://jdbc:sap://saphana2.host:port/?user=sample2&password=sample2 | 

##### Memberikan kredensi
<a name="connectors-sap-hana-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi dengan erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${Test/RDS/Saphana1}`.

```
saphana://jdbc:sap://saphana1.host:port/?${Test/RDS/Saphana1}&...
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
saphana://jdbc:sap://saphana1.host:port/?user=sample2&password=sample2&...
```

Saat ini, konektor SAP HANA mengenali properti `user` dan `password` JDBC.

#### Menggunakan handler koneksi tunggal
<a name="connectors-sap-hana-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance SAP HANA.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | SaphanaCompositeHandler | 
| Penangan metadata | SaphanaMetadataHandler | 
| Rekam handler | SaphanaRecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-sap-hana-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk satu instance SAP HANA yang didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | saphana://jdbc:sap://saphana1.host:port/?secret=Test/RDS/Saphana1 | 

#### Parameter tumpahan
<a name="connectors-sap-hana-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-sap-hana-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC dan Apache Arrow.


****  

| JDBC | Panah | 
| --- | --- | 
| Boolean | Bit | 
| Bilangan Bulat | Mungil | 
| Pendek | berkulit kecil | 
| Bilangan Bulat | Int | 
| Panjang | Bigint | 
| float | Mengapung4 | 
| Ganda | Mengapung8 | 
| Date | DateDay | 
| Stempel waktu | DateMilli | 
| String | Varchar | 
| Byte | Varbiner | 
| BigDecimal | Decimal | 
| ARRAY | Daftar | 

## Konversi jenis data
<a name="connectors-sap-hana-data-type-conversions"></a>

Selain konversi JDBC ke Arrow, konektor melakukan konversi tertentu lainnya untuk membuat sumber SAP HANA dan tipe data Athena kompatibel. Konversi ini membantu memastikan bahwa kueri berhasil dieksekusi. Tabel berikut menunjukkan konversi ini.


****  

| Tipe data sumber (SAP HANA) | Tipe data yang dikonversi (Athena) | 
| --- | --- | 
| DECIMAL | BIGINT | 
| INTEGER | INT | 
| DATE | TANGGAL | 
| TIMESTAMP | DATEMILLI | 

Semua tipe data lain yang tidak didukung dikonversi ke`VARCHAR`.

## Partisi dan split
<a name="connectors-sap-hana-partitions-and-splits"></a>

Partisi diwakili oleh kolom partisi tunggal tipe`Integer`. Kolom berisi nama partisi dari partisi yang didefinisikan pada tabel SAP HANA. Untuk tabel yang tidak memiliki nama partisi, \$1 dikembalikan, yang setara dengan satu partisi. Partisi setara dengan split.


****  

| Nama | Tipe | Deskripsi | 
| --- | --- | --- | 
| PART\$1ID | Bilangan Bulat | Dinamakan partisi di SAP HANA. | 

## Performa
<a name="connectors-sap-hana-performance"></a>

SAP HANA mendukung partisi asli. Konektor Athena SAP HANA dapat mengambil data dari partisi ini secara paralel. Jika Anda ingin menanyakan kumpulan data yang sangat besar dengan distribusi partisi yang seragam, partisi asli sangat disarankan. Memilih subset kolom secara signifikan mempercepat runtime kueri dan mengurangi data yang dipindai. Konektor menunjukkan pelambatan yang signifikan, dan terkadang kegagalan kueri, karena konkurensi.

Konektor Athena SAP HANA melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa, predikat sederhana, dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri. 

### Klausul LIMIT
<a name="connectors-saphana-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Predikat
<a name="connectors-saphana-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena SAP HANA dapat menggabungkan ekspresi ini dan mendorongnya langsung ke SAP HANA untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena SAP HANA berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-saphana-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Kueri passthrough
<a name="connectors-saphana-passthrough-queries"></a>

Konektor SAP HANA mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan SAP HANA, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di SAP HANA. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-saphana-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-saphana-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/pom.xml) untuk konektor SAP HANA di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-saphana) GitHub di.com.

# Konektor Kepingan Salju Amazon Athena
<a name="connectors-snowflake"></a>

Konektor Amazon Athena untuk [Snowflake memungkinkan Amazon](https://www.snowflake.com/) Athena menjalankan kueri SQL pada data yang disimpan dalam database SQL Snowflake atau instans RDS menggunakan JDBC.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-snowflake-prerequisites"></a>

Menerapkan konektor ke Anda Akun AWS menggunakan konsol Athena atau operasi API`CreateDataCatalog`. Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md).

## Batasan
<a name="connectors-snowflake-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Hanya koneksi lama yang mendukung pengaturan multiplexer. 
+ Saat ini, tampilan Snowflake dengan single split didukung. 
+  Di Snowflake, nama objek peka huruf besar/kecil. Athena menerima kasus campuran dalam kueri DDL dan DHTML, tetapi secara default [menurunkan nama objek saat mengeksekusi](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html#table-names-and-table-column-names-in-ate-must-be-lowercase) kueri. Konektor Snowflake hanya mendukung huruf kecil saat Glue Catalog/Lake Formation digunakan. Ketika Katalog Athena digunakan, pelanggan dapat mengontrol perilaku casing menggunakan variabel lingkungan `casing_mode` Lambda yang nilainya mungkin tercantum di [Parameter](#connectors-snowflake-parameters) bagian (misalnya,). `key=casing_mode, value = CASE_INSENSITIVE_SEARCH` 

## Ketentuan
<a name="connectors-snowflake-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Snowflake.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-snowflake-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Snowflake.

### Koneksi Glue (disarankan)
<a name="snowflake-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor Snowflake dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Snowflake Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type SNOWFLAKE
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **NONE** - Jangan mengubah kasus skema dan nama tabel yang diberikan (jalankan kueri seperti terhadap Snowflake). Ini adalah nilai default ketika **casing\$1mode** tidak ditentukan. 
  + **UPPER** - Huruf besar semua skema dan nama tabel yang diberikan dalam kueri sebelum menjalankannya terhadap Snowflake.
  + **LOWER** - Huruf kecil semua skema dan nama tabel yang diberikan dalam kueri sebelum menjalankannya terhadap Snowflake.
  + **CASE\$1INSENSITIVE\$1SEARCH — Lakukan pencarian** case insensitive terhadap skema dan nama tabel di Snowflake. Misalnya, Anda dapat menggunakan mode ini ketika Anda memiliki kueri seperti `SELECT * FROM EMPLOYEE` dan Snowflake berisi tabel yang disebut. `Employee` Namun, dengan adanya tabrakan nama, seperti memiliki tabel yang dipanggil `EMPLOYEE` dan tabel lain yang disebut `Employee` di Snowflake, kueri akan gagal.

**catatan**  
Konektor Snowflake yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Snowflake yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

**Menyimpan kredensil**

Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil. Untuk informasi selengkapnya, lihat [Otentikasi dengan Snowflake](connectors-snowflake-authentication.md).

### Koneksi warisan
<a name="snowflake-legacy"></a>

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue 

Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat tanpa koneksi Glue terkait. Gunakan parameter berikut hanya jika Anda [menggunakan versi sebelumnya dari konektor sumber data Athena secara manual](connect-data-source-serverless-app-repo.md) atau saat `glue_connection` properti lingkungan tidak ditentukan.

**Properti lingkungan Lambda**
+ **default** - String koneksi JDBC yang digunakan untuk terhubung ke instance database Snowflake. Sebagai contoh, `snowflake://${jdbc_connection_string}`.
+ **catalog\$1connection\$1string** - Digunakan oleh handler Multiplexing (tidak didukung saat menggunakan sambungan lem). Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog yang terdaftar di Athena adalah mysnowflakecatalog, maka nama variabel lingkungan adalah mysnowflakecatalog\$1connection\$1string.
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **NONE** - Jangan mengubah kasus skema dan nama tabel yang diberikan (jalankan kueri seperti terhadap Snowflake). Ini adalah nilai default ketika **casing\$1mode** tidak ditentukan. 
  + **UPPER** - Huruf besar semua skema dan nama tabel yang diberikan dalam kueri sebelum menjalankannya terhadap Snowflake.
  + **LOWER** - Huruf kecil semua skema dan nama tabel yang diberikan dalam kueri sebelum menjalankannya terhadap Snowflake.
  + **CASE\$1INSENSITIVE\$1SEARCH — Lakukan pencarian** case insensitive terhadap skema dan nama tabel di Snowflake. Misalnya, Anda dapat menggunakan mode ini ketika Anda memiliki kueri seperti `SELECT * FROM EMPLOYEE` dan Snowflake berisi tabel yang disebut. `Employee` Namun, dengan adanya tabrakan nama, seperti memiliki tabel yang dipanggil `EMPLOYEE` dan tabel lain yang disebut `Employee` di Snowflake, kueri akan gagal.
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)

#### String koneksi
<a name="connectors-snowflake-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
snowflake://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-snowflake-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas-kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | SnowflakeMuxCompositeHandler | 
| Penangan metadata | SnowflakeMuxMetadataHandler | 
| Rekam handler | SnowflakeMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-snowflake-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmysnowflakecatalog, maka nama variabel lingkungan adalah. mysnowflakecatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Snowflake MUX Lambda yang mendukung dua instance database`snowflake1`: (default), dan. `snowflake2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1&\$1\$1Test/RDS/Snowflake1\$1 | 
| snowflake\$1catalog1\$1connection\$1string | snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1\$1\$1Test/RDS/Snowflake1\$1 | 
| snowflake\$1catalog2\$1connection\$1string | snowflake://jdbc:snowflake://snowflake2.host:port/?warehouse=warehousename&db=db1&schema=schema1&user=sample2&password=sample2 | 

##### Memberikan kredensi
<a name="connectors-snowflake-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi dengan erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${Test/RDS/Snowflake1}`.

```
snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1${Test/RDS/Snowflake1}&... 
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
snowflake://jdbc:snowflake://snowflake1.host:port/warehouse=warehousename&db=db1&schema=schema1&user=sample2&password=sample2&... 
```

Saat ini, Snowflake mengenali properti `user` dan `password` JDBC. Ini juga menerima nama pengguna dan kata sandi dalam format *username* `/` *password* tanpa kunci `user` atau`password`.

#### Menggunakan handler koneksi tunggal
<a name="connectors-snowflake-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance Snowflake.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | SnowflakeCompositeHandler | 
| Penangan metadata | SnowflakeMetadataHandler | 
| Rekam handler | SnowflakeRecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-snowflake-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk instance Snowflake tunggal yang didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | snowflake://jdbc:snowflake://snowflake1.host:port/?secret=Test/RDS/Snowflake1 | 

#### Parameter tumpahan
<a name="connectors-snowflake-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-snowflake-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC dan Apache Arrow.


****  

| JDBC | Panah | 
| --- | --- | 
| Boolean | Bit | 
| Bilangan Bulat | Mungil | 
| Pendek | berkulit kecil | 
| Bilangan Bulat | Int | 
| Panjang | Besar-bigint | 
| float | Mengapung4 | 
| Ganda | Mengapung8 | 
| Date | DateDay | 
| Stempel waktu | DateMilli | 
| String | Varchar | 
| Byte | Varbiner | 
| BigDecimal | Decimal | 
| ARRAY | Daftar | 

## Konversi jenis data
<a name="connectors-snowflake-data-type-conversions"></a>

Selain konversi JDBC ke Arrow, konektor melakukan konversi tertentu lainnya untuk membuat sumber Snowflake dan tipe data Athena kompatibel. Konversi ini membantu memastikan bahwa kueri berhasil dieksekusi. Tabel berikut menunjukkan konversi ini.


****  

| Tipe data sumber (Snowflake) | Tipe data yang dikonversi (Athena) | 
| --- | --- | 
| TIMESTAMP | TIMESTAMPMILLI | 
| DATE | TIMESTAMPMILLI | 
| INTEGER | INT | 
| DECIMAL | BIGINT | 
| TIMESTAMP\$1NTZ | TIMESTAMPMILLI | 

Semua tipe data lain yang tidak didukung dikonversi ke`VARCHAR`.

## Partisi dan split
<a name="connectors-snowflake-partitions-and-splits"></a>

Partisi digunakan untuk menentukan cara menghasilkan split untuk konektor. Athena membangun kolom sintetis tipe `varchar` yang mewakili skema partisi untuk tabel untuk membantu konektor menghasilkan split. Konektor tidak mengubah definisi tabel yang sebenarnya.

Untuk membuat kolom sintetis ini dan partisi, Athena memerlukan kunci primer untuk didefinisikan. Namun, karena Snowflake tidak memberlakukan kendala kunci utama, Anda harus menegakkan keunikan sendiri. Kegagalan untuk melakukannya menyebabkan Athena default ke satu split.

## Performa
<a name="connectors-snowflake-performance"></a>

Untuk kinerja optimal, gunakan filter dalam kueri bila memungkinkan. Selain itu, kami sangat merekomendasikan partisi asli untuk mengambil kumpulan data besar yang memiliki distribusi partisi seragam. Memilih subset kolom secara signifikan mempercepat runtime kueri dan mengurangi data yang dipindai. Konektor Snowflake tahan terhadap throttling karena konkurensi.

Konektor Athena Snowflake melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa, predikat sederhana, dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri.

### Klausul LIMIT
<a name="connectors-snowflake-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Predikat
<a name="connectors-snowflake-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena Snowflake dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Snowflake untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena Snowflake berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-snowflake-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

# Otentikasi dengan Snowflake
<a name="connectors-snowflake-authentication"></a>

Anda dapat mengonfigurasi konektor Amazon Athena Snowflake untuk menggunakan otentikasi pasangan kunci atau OAuth metode otentikasi untuk terhubung ke gudang data Snowflake Anda. Kedua metode menyediakan akses aman ke Snowflake dan menghilangkan kebutuhan untuk menyimpan kata sandi dalam string koneksi.
+ **Otentikasi pasangan kunci** — Metode ini menggunakan pasangan kunci publik atau pribadi RSA untuk mengautentikasi dengan Snowflake. Kunci privat secara digital menandatangani permintaan otentikasi sementara kunci publik terkait terdaftar di Snowflake untuk verifikasi. Metode ini menghilangkan penyimpanan kata sandi.
+ **OAuth otentikasi** — Metode ini menggunakan token otorisasi dan token penyegaran untuk mengautentikasi dengan Snowflake. Ini mendukung penyegaran token otomatis, sehingga cocok untuk aplikasi yang berjalan lama.

Untuk informasi selengkapnya, lihat [otentikasi dan OAuth otentikasi pasangan kunci](https://docs.snowflake.com/en/user-guide/key-pair-auth) [di panduan pengguna Snowflake](https://docs.snowflake.com/en/user-guide/oauth-custom).

## Prasyarat
<a name="connectors-snowflake-authentication-prerequisites"></a>

Sebelum menggunakan fungsi , pastikan untuk melengkapi prasyarat berikut:
+ Akses akun Snowflake dengan hak administratif.
+ Akun pengguna Snowflake yang didedikasikan untuk konektor Athena.
+ OpenSSL atau alat pembuat kunci yang setara untuk otentikasi pasangan kunci.
+ AWS Secrets Manager akses untuk membuat dan mengelola rahasia.
+ Browser web untuk menyelesaikan OAuth alur untuk OAuth otentikasi.

## Konfigurasikan otentikasi pasangan kunci
<a name="connectors-snowflake-keypair-authentication"></a>

Proses ini melibatkan pembuatan pasangan kunci RSA, mengonfigurasi akun Snowflake Anda dengan kunci publik, dan menyimpan kunci pribadi dengan aman. AWS Secrets Manager Langkah-langkah berikut akan memandu Anda dalam membuat kunci kriptografi, menyiapkan izin Snowflake yang diperlukan, dan mengonfigurasi AWS kredensi untuk otentikasi tanpa batas. 

1. **Hasilkan pasangan kunci RSA**

   Hasilkan key pair pribadi dan publik menggunakan OpenSSL.
   + Untuk menghasilkan versi yang tidak terenkripsi, gunakan perintah berikut di aplikasi baris perintah lokal Anda.

     ```
     openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
     ```
   + Untuk menghasilkan versi terenkripsi, gunakan perintah berikut, yang menghilangkan. `-nocrypt`

     ```
     openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
     ```
   + Untuk menghasilkan kunci publik dari kunci pribadi.

     ```
     openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
     # Set appropriate permissions (Unix/Linux)
     chmod 600 rsa_key.p8
     chmod 644 rsa_key.pub
     ```
**catatan**  
Jangan berbagi kunci pribadi Anda. Kunci pribadi seharusnya hanya dapat diakses oleh aplikasi yang perlu diautentikasi dengan Snowflake.

1. **Ekstrak konten kunci publik tanpa pembatas untuk Snowflake**

   ```
   # Extract public key content (remove BEGIN/END lines and newlines)
   cat rsa_key.pub | grep -v "BEGIN\|END" | tr -d '\n'
   ```

   Simpan output ini karena Anda akan membutuhkannya nanti di langkah berikutnya.

1. **Konfigurasikan pengguna Snowflake**

   Ikuti langkah-langkah ini untuk mengkonfigurasi pengguna Snowflake.

   1. Buat pengguna khusus untuk konektor Athena jika belum ada.

      ```
      -- Create user for Athena connector
      CREATE USER athena_connector_user;
      
      -- Grant necessary privileges
      GRANT USAGE ON WAREHOUSE your_warehouse TO ROLE athena_connector_role;
      GRANT USAGE ON DATABASE your_database TO ROLE athena_connector_role;
      GRANT SELECT ON ALL TABLES IN DATABASE your_database TO ROLE athena_connector_role;
      ```

   1. Berikan hak otentikasi. Untuk menetapkan kunci publik kepada pengguna, Anda harus memiliki salah satu peran atau hak istimewa berikut.
      + `OWNERSHIP`Hak istimewa `MODIFY PROGRAMMATIC AUTHENTICATION METHODS` atau hak istimewa pada pengguna.
      + `SECURITYADMIN`Peran atau lebih tinggi.

      Berikan hak istimewa yang diperlukan untuk menetapkan kunci publik dengan perintah berikut.

      ```
      GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER athena_connector_user TO ROLE your_admin_role;
      ```

   1. Tetapkan kunci publik ke pengguna Snowflake dengan perintah berikut.

      ```
      ALTER USER athena_connector_user SET RSA_PUBLIC_KEY='RSAkey';
      ```

      Verifikasi bahwa kunci publik berhasil ditetapkan ke pengguna dengan perintah berikut.

      ```
      DESC USER athena_connector_user;
      ```

1. **Simpan kunci pribadi di AWS Secrets Manager**

   1. Konversikan kunci pribadi Anda ke format yang diperlukan oleh konektor.

      ```
      # Read private key content
      cat rsa_key.p8
      ```

   1. Buat rahasia AWS Secrets Manager dengan struktur berikut.

      ```
      {
        "sfUser": "your_snowflake_user",
        "pem_private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
        "pem_private_key_passphrase": "passphrase_in_case_of_encrypted_private_key(optional)"
      }
      ```
**catatan**  
Header dan footer bersifat opsional.
Kunci privat harus dipisahkan oleh`\n`.

## Konfigurasikan OAuth otentikasi
<a name="connectors-snowflake-oauth-authentication"></a>

Metode otentikasi ini memungkinkan akses berbasis token yang aman ke Snowflake dengan kemampuan penyegaran kredenal otomatis. Proses konfigurasi melibatkan pembuatan integrasi keamanan di Snowflake, mengambil kredensi OAuth klien, menyelesaikan alur otorisasi untuk mendapatkan kode akses, dan menyimpan OAuth kredensil untuk konektor yang akan digunakan. AWS Secrets Manager 

1. **Buat integrasi keamanan di Snowflake**

   Jalankan perintah SQL berikut di Snowflake untuk membuat integrasi keamanan OAuth Snowflake.

   ```
   CREATE SECURITY INTEGRATION my_snowflake_oauth_integration_a
     TYPE = OAUTH
     ENABLED = TRUE
     OAUTH_CLIENT = CUSTOM
     OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
     OAUTH_REDIRECT_URI = 'https://localhost:8080/oauth/callback'
     OAUTH_ISSUE_REFRESH_TOKENS = TRUE
     OAUTH_REFRESH_TOKEN_VALIDITY = 7776000;
   ```

   **Parameter konfigurasi**
   + `TYPE = OAUTH`- Menentukan jenis OAuth otentikasi.
   + `ENABLED = TRUE`— Memungkinkan integrasi keamanan.
   + `OAUTH_CLIENT = CUSTOM`— Menggunakan konfigurasi OAuth klien kustom.
   + `OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'`— Menetapkan tipe klien untuk aplikasi yang aman.
   + `OAUTH_REDIRECT_URI`— URL callback untuk OAuth flow. Ini bisa menjadi localhost untuk pengujian.
   + `OAUTH_ISSUE_REFRESH_TOKENS = TRUE`— Mengaktifkan pembuatan token penyegaran.
   + `OAUTH_REFRESH_TOKEN_VALIDITY = 7776000`— Menetapkan validitas token refresh (90 hari dalam detik).

1. **Ambil rahasia OAuth klien**

   1. Jalankan perintah SQL berikut untuk mendapatkan kredensil klien.

      ```
      DESC SECURITY INTEGRATION 'MY_SNOWFLAKE_OAUTH_INTEGRATION_A';
      ```

   1. Ambil rahasia OAuth klien.

      ```
      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('MY_SNOWFLAKE_OAUTH_INTEGRATION_A');
      ```

      **Contoh respon**

      ```
      {
        "OAUTH_CLIENT_SECRET_2": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "OAUTH_CLIENT_SECRET": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY,
        "OAUTH_CLIENT_ID": "AIDACKCEVSQ6C2EXAMPLE"
      }
      ```
**catatan**  
Jaga kredensil ini aman dan jangan membagikannya. Ini akan digunakan untuk mengkonfigurasi OAuth klien.

1. **Otorisasi pengguna dan ambil kode otorisasi**

   1. Buka URL berikut di browser.

      ```
      https://<your_account>.snowflakecomputing.com/oauth/authorize?client_id=<OAUTH_CLIENT_ID>&response_type=code&redirect_uri=https://localhost:8080/oauth/callback
      ```

   1. Lengkapi aliran otorisasi.

      1. Masuk menggunakan kredensi Snowflake Anda.

      1. Berikan izin yang diminta. Anda akan diarahkan ke URI callback dengan kode otorisasi.

   1. Ekstrak kode otorisasi dengan menyalin parameter kode dari URL pengalihan.

      ```
      https://localhost:8080/oauth/callback?code=<authorizationcode>
      ```
**catatan**  
Kode otorisasi berlaku untuk waktu yang terbatas dan hanya dapat digunakan sekali.

1. **Simpan OAuth kredensi di AWS Secrets Manager**

   Buat rahasia AWS Secrets Manager dengan struktur berikut.

   ```
   {
     "redirect_uri": "https://localhost:8080/oauth/callback",
     "client_secret": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
     "token_url": "https://<your_account>.snowflakecomputing.com/oauth/token-request",
     "client_id": "AIDACKCEVSQ6C2EXAMPLE,
     "username": "your_snowflake_username",
     "auth_code": "authorizationcode"
   }
   ```

   **Bidang yang diperlukan**
   + `redirect_uri`— OAuth redirect URI yang Anda peroleh dari Langkah 1.
   + `client_secret`— Rahasia OAuth klien yang Anda peroleh dari Langkah 2.
   + `token_url`— Snowflake Titik akhir OAuth token.
   + `client_id`— ID OAuth klien dari Langkah 2.
   + `username`— Nama pengguna Snowflake untuk konektor.
   + `auth_code`— Kode otorisasi yang Anda peroleh dari Langkah 3.

Setelah Anda membuat rahasia, Anda mendapatkan ARN rahasia yang dapat Anda gunakan dalam koneksi Glue Anda ketika Anda [membuat koneksi sumber data](connect-to-a-data-source.md). 

## Kueri passthrough
<a name="connectors-snowflake-passthrough-queries"></a>

Konektor Snowflake mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Snowflake, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di Snowflake. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-snowflake-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-snowflake-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/pom.xml) untuk konektor Snowflake di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-snowflake) GitHub di.com.

# Konektor Amazon Athena Microsoft SQL Server
<a name="connectors-microsoft-sql-server"></a>

Konektor Amazon Athena untuk [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/?view=sql-server-ver15) memungkinkan Amazon Athena menjalankan kueri SQL pada data Anda yang disimpan di Microsoft SQL Server menggunakan JDBC.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-sqlserver-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-microsoft-sql-server-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.
+ Dalam kondisi filter, Anda harus mentransmisikan tipe `Date` dan `Timestamp` data ke tipe data yang sesuai.
+ Untuk mencari nilai negatif dari jenis `Real` dan`Float`, gunakan `>=` operator `<=` atau.
+ Tipe `rowversion` data `binary` `varbinary``image`,, dan tidak didukung.

## Ketentuan
<a name="connectors-microsoft-sql-server-terms"></a>

Istilah berikut berhubungan dengan konektor SQL Server.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-microsoft-sql-server-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor SQL Server.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi Glue (disarankan)
<a name="connectors-microsoft-sql-server-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor SQL Server dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor SQL Server Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type SQLSERVER
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi.
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **none** — Jangan mengubah kasus skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait. 
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel.
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor SQL Server yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor SQL Server yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-microsoft-sql-server-legacy"></a>

#### String koneksi
<a name="connectors-microsoft-sql-server-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
sqlserver://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-microsoft-sql-server-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | SqlServerMuxCompositeHandler | 
| Penangan metadata | SqlServerMuxMetadataHandler | 
| Rekam handler | SqlServerMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-microsoft-sql-server-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmysqlservercatalog, maka nama variabel lingkungan adalah. mysqlservercatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi SqlServer MUX Lambda yang mendukung dua instance database`sqlserver1`: (default), dan. `sqlserver2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | sqlserver://jdbc:sqlserver://sqlserver1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| sqlserver\$1catalog1\$1connection\$1string | sqlserver://jdbc:sqlserver://sqlserver1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| sqlserver\$1catalog2\$1connection\$1string | sqlserver://jdbc:sqlserver://sqlserver2.hostname:port;databaseName=<database\$1name>;\$1\$1secret2\$1name\$1 | 

##### Memberikan kredensi
<a name="connectors-microsoft-sql-server-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${secret_name}`.

```
sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database_name>;${secret_name}
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database_name>;user=<user>;password=<password>
```

#### Menggunakan handler koneksi tunggal
<a name="connectors-microsoft-sql-server-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance SQL Server.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | SqlServerCompositeHandler | 
| Penangan metadata | SqlServerMetadataHandler | 
| Rekam handler | SqlServerRecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-microsoft-sql-server-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk contoh SQL Server tunggal didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database\$1name>;\$1\$1secret\$1name\$1 | 

#### Parameter tumpahan
<a name="connectors-microsoft-sql-server-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-microsoft-sql-server-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk SQL Server dan Apache Arrow.


****  

| SQL Server | Panah | 
| --- | --- | 
| bit | TINYINT | 
| tinyint | SMALLINT | 
| smallint | SMALLINT | 
| int | INT | 
| bigint | BIGINT | 
| desimal | DECIMAL | 
| numerik | FLOAT8 | 
| uang kecil | FLOAT8 | 
| money | DECIMAL | 
| mengapung [24] | FLOAT4 | 
| mengapung [53] | FLOAT8 | 
| real | FLOAT4 | 
| datetime | Tanggal (MILLISECOND) | 
| tanggal2 | Tanggal (MILLISECOND) | 
| smalldatetime | Tanggal (MILLISECOND) | 
| date | Tanggal (HARI) | 
| Waktu | VARCHAR | 
| datetimeoffset | Tanggal (MILLISECOND) | 
| arang [n] | VARCHAR | 
| varchar [n/maks] | VARCHAR | 
| nchar [n] | VARCHAR | 
| nvarchar [n/max] | VARCHAR | 
| text | VARCHAR | 
| nteks | VARCHAR | 

## Partisi dan split
<a name="connectors-microsoft-sql-server-partitions-and-splits"></a>

Partisi diwakili oleh kolom partisi tunggal tipe`varchar`. Dalam kasus konektor SQL Server, fungsi partisi menentukan bagaimana partisi diterapkan di atas meja. Fungsi partisi dan informasi nama kolom diambil dari tabel metadata SQL Server. Kueri kustom kemudian mendapatkan partisi. Pemisahan dibuat berdasarkan jumlah partisi berbeda yang diterima.

## Performa
<a name="connectors-microsoft-sql-server-performance"></a>

Memilih subset kolom secara signifikan mempercepat runtime kueri dan mengurangi data yang dipindai. Konektor SQL Server tahan terhadap throttling karena konkurensi.

Konektor Athena SQL Server melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. Predikat sederhana dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri. 

### Predikat
<a name="connectors-sqlserver-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena SQL Server dapat menggabungkan ekspresi ini dan mendorongnya langsung ke SQL Server untuk fungsionalitas yang ditingkatkan dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena SQL Server berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-sqlserver-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Kueri passthrough
<a name="connectors-sqlserver-passthrough-queries"></a>

Konektor SQL Server mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan SQL Server, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di SQL Server. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-sqlserver-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-sqlserver-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/pom.xml) untuk konektor SQL Server di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-sqlserver) GitHub di.com.

# Konektor Amazon Athena Teradata
<a name="connectors-teradata"></a>

 Konektor Amazon Athena untuk Teradata memungkinkan Athena menjalankan kueri SQL pada data yang disimpan dalam database Teradata Anda. 

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

## Prasyarat
<a name="connectors-teradata-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-teradata-limitations"></a>
+ Menulis operasi DDL tidak didukung.
+ Dalam pengaturan multiplexer, bucket tumpahan dan awalan dibagikan di semua instance database.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.

## Ketentuan
<a name="connectors-teradata-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Teradata.
+ **Instans database** — Instance apa pun dari database yang digunakan di tempat, di Amazon EC2, atau di Amazon RDS.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`
+ **Multiplexing handler** - Handler Lambda yang dapat menerima dan menggunakan beberapa koneksi database.

## Parameter
<a name="connectors-teradata-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Teradata.

### Koneksi Glue (disarankan)
<a name="connectors-teradata-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor Teradata dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Teradata Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type TERADATA
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi.
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **none** — Jangan mengubah kasus skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait. 
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel.
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor Teradata yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Teradata yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-teradata-legacy"></a>

#### String koneksi
<a name="connectors-teradata-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
teradata://${jdbc_connection_string}
```

#### Menggunakan handler multiplexing
<a name="connectors-teradata-using-a-multiplexing-handler"></a>

Anda dapat menggunakan multiplexer untuk terhubung ke beberapa instance database dengan satu fungsi Lambda. Permintaan dirutekan dengan nama katalog. Gunakan kelas-kelas berikut di Lambda.


****  

| Handler | Kelas | 
| --- | --- | 
| Handler komposit | TeradataMuxCompositeHandler | 
| Penangan metadata | TeradataMuxMetadataHandler | 
| Rekam handler | TeradataMuxRecordHandler | 

##### Parameter handler multiplexing
<a name="connectors-teradata-multiplexing-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Wajib. Sebuah string koneksi instance database. Awalan variabel lingkungan dengan nama katalog yang digunakan di Athena. Misalnya, jika katalog terdaftar di Athena adalahmyteradatacatalog, maka nama variabel lingkungan adalah. myteradatacatalog\$1connection\$1string | 
| default | Wajib. String koneksi default. String ini digunakan saat katalognya lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Contoh properti berikut adalah untuk fungsi Teradata MUX Lambda yang mendukung dua instance database`teradata1`: (default), dan. `teradata2`


****  

| Properti | Nilai | 
| --- | --- | 
| default | teradata://jdbc:teradata://teradata2.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,user=sample2&password=sample2 | 
| teradata\$1catalog1\$1connection\$1string | teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,\$1\$1Test/RDS/Teradata1\$1 | 
| teradata\$1catalog2\$1connection\$1string | teradata://jdbc:teradata://teradata2.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,user=sample2&password=sample2 | 

##### Memberikan kredensi
<a name="connectors-teradata-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi dengan erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia`${Test/RDS/Teradata1}`.

```
teradata://jdbc:teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,${Test/RDS/Teradata1}&...
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,...&user=sample2&password=sample2&...
```

Saat ini, Teradata mengenali properti `user` dan `password` JDBC. Ini juga menerima nama pengguna dan kata sandi dalam format *username* `/` *password* tanpa kunci `user` atau`password`.

#### Menggunakan handler koneksi tunggal
<a name="connectors-teradata-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance Teradata.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | TeradataCompositeHandler | 
| Penangan metadata | TeradataMetadataHandler | 
| Rekam handler | TeradataRecordHandler | 

##### Parameter handler koneksi tunggal
<a name="connectors-teradata-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

Properti contoh berikut adalah untuk instance Teradata tunggal yang didukung oleh fungsi Lambda.


****  

| Properti | Nilai | 
| --- | --- | 
| default | teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,secret=Test/RDS/Teradata1 | 

#### Parameter tumpahan
<a name="connectors-teradata-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-teradata-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang sesuai untuk JDBC dan Apache Arrow.


****  

| JDBC | Panah | 
| --- | --- | 
| Boolean | Bit | 
| Bilangan Bulat | Mungil | 
| Pendek | berkulit kecil | 
| Bilangan Bulat | Int | 
| Panjang | Besar-bigint | 
| float | Mengapung4 | 
| Ganda | Mengapung8 | 
| Date | DateDay | 
| Stempel waktu | DateMilli | 
| String | Varchar | 
| Byte | Varbiner | 
| BigDecimal | Decimal | 
| ARRAY | Daftar | 

## Partisi dan split
<a name="connectors-teradata-partitions-and-splits"></a>

Partisi diwakili oleh kolom partisi tunggal tipe`Integer`. Kolom berisi nama partisi dari partisi yang didefinisikan pada tabel Teradata. Untuk tabel yang tidak memiliki nama partisi, \$1 dikembalikan, yang setara dengan satu partisi. Partisi setara dengan split.


****  

| Nama | Tipe | Deskripsi | 
| --- | --- | --- | 
| partisi | Bilangan Bulat | Dinamakan partisi di Teradata. | 

## Performa
<a name="connectors-teradata-performance"></a>

Teradata mendukung partisi asli. Konektor Athena Teradata dapat mengambil data dari partisi ini secara paralel. Jika Anda ingin menanyakan kumpulan data yang sangat besar dengan distribusi partisi yang seragam, partisi asli sangat disarankan. Memilih subset kolom secara signifikan memperlambat runtime kueri. Konektor menunjukkan beberapa pelambatan karena konkurensi.

Konektor Athena Teradata melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. Predikat sederhana dan ekspresi kompleks didorong ke konektor untuk mengurangi jumlah data yang dipindai dan mengurangi waktu eksekusi kueri.

### Predikat
<a name="connectors-teradata-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Konektor Athena Teradata dapat menggabungkan ekspresi ini dan mendorongnya langsung ke Teradata untuk meningkatkan fungsionalitas dan untuk mengurangi jumlah data yang dipindai.

Operator konektor Athena Teradata berikut mendukung pushdown predikat:
+ **Boolean:** DAN, ATAU, TIDAK
+ **KESETARAAN: SAMA, NOT\$1EQUAL**, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, NULL\$1IF, IS\$1NULL
+ **Aritmatika:** TAMBAHKAN, KURANGI, KALIKAN, BAGI, MODULUS, MENIADAKAN
+ **Lainnya:** LIKE\$1PATTERN, IN

### Contoh pushdown gabungan
<a name="connectors-teradata-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Kueri passthrough
<a name="connectors-teradata-passthrough-queries"></a>

Konektor Teradata mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Teradata, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di Teradata. Query memilih semua kolom dalam `customer` tabel.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer'
        ))
```

## Informasi lisensi
<a name="connectors-teradata-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-teradata-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/pom.xml) untuk konektor Teradata di.com. GitHub

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-teradata) GitHub di.com.

# Konektor Timestream Amazon Athena
<a name="connectors-timestream"></a>

Konektor Timestream Amazon Athena memungkinkan Amazon Athena berkomunikasi dengan Amazon [Timestream, membuat data deret waktu Anda dapat diakses melalui Amazon](https://aws.amazon.com/timestream/) Athena. Anda dapat secara opsional menggunakan AWS Glue Data Catalog sebagai sumber metadata tambahan.

Amazon Timestream adalah cepat, scalable, sepenuhnya dikelola, tujuan dibangun basis data seri waktu yang membuatnya mudah untuk menyimpan dan menganalisis triliunan titik data time series per hari. Timestream menghemat waktu dan biaya Anda dalam mengelola siklus hidup data seri waktu dengan menyimpan data terbaru dalam memori dan memindahkan data historis ke level penyimpanan yang dioptimalkan biaya berdasarkan kebijakan yang ditetapkan pengguna.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

## Prasyarat
<a name="connectors-timestream-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Parameter
<a name="connectors-timestream-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Timestream.

### Koneksi Glue (disarankan)
<a name="connectors-timestream-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor Timestream dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Timestream Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type TIMESTREAM
```

**Properti lingkungan Lambda**

**glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor Timestream yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Timestream yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-timestream-legacy"></a>

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue 

Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat tanpa koneksi Glue terkait. Gunakan parameter berikut hanya jika Anda [menggunakan versi sebelumnya dari konektor sumber data Athena secara manual](connect-data-source-serverless-app-repo.md) atau saat `glue_connection` properti lingkungan tidak ditentukan.

**Properti lingkungan Lambda**
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **glue\$1catalog** [- (Opsional) Gunakan opsi ini untuk menentukan katalog lintas akun. AWS Glue](data-sources-glue-cross-account.md) Secara default, konektor mencoba untuk mendapatkan metadata dari akunnya sendiri AWS Glue .

## Menyiapkan database dan tabel di AWS Glue
<a name="connectors-timestream-setting-up-databases-and-tables-in-aws-glue"></a>

Anda dapat secara opsional menggunakan AWS Glue Data Catalog sebagai sumber metadata tambahan. Untuk mengaktifkan AWS Glue tabel untuk digunakan dengan Timestream, Anda harus memiliki AWS Glue database dan tabel dengan nama yang cocok dengan database Timestream dan tabel yang ingin Anda berikan metadata tambahan.

**catatan**  
Untuk kinerja terbaik, gunakan hanya huruf kecil untuk nama database dan nama tabel Anda. Menggunakan casing campuran menyebabkan konektor melakukan pencarian case insensitive yang lebih intensif secara komputasi.

Untuk mengkonfigurasi AWS Glue tabel untuk digunakan dengan Timestream, Anda harus mengatur properti tabelnya. AWS Glue

**Untuk menggunakan AWS Glue tabel untuk metadata tambahan**

1. Edit tabel di AWS Glue konsol untuk menambahkan properti tabel berikut:
   + **timestream-metadata-flag**- Properti ini menunjukkan ke konektor Timestream bahwa konektor dapat menggunakan tabel untuk metadata tambahan. Anda dapat memberikan nilai apa pun `timestream-metadata-flag` selama `timestream-metadata-flag` properti hadir dalam daftar properti tabel.
   + **\$1view\$1template** - Bila Anda menggunakan AWS Glue metadata tambahan, Anda dapat menggunakan properti tabel ini dan menentukan SQL Timestream sebagai tampilan. Konektor Athena Timestream menggunakan SQL dari tampilan bersama dengan SQL Anda dari Athena untuk menjalankan kueri Anda. Ini berguna jika Anda ingin menggunakan fitur Timestream SQL yang tidak tersedia di Athena.

1. Pastikan Anda menggunakan tipe data yang sesuai AWS Glue seperti yang tercantum dalam dokumen ini.

### Jenis Data
<a name="connectors-timestream-data-types"></a>

Saat ini, konektor Timestream hanya mendukung sebagian dari tipe data yang tersedia di Timestream, khususnya: nilai `varchar` skalar,, dan. `double` `timestamp`

Untuk menanyakan tipe `timeseries` data, Anda harus mengonfigurasi tampilan dalam properti AWS Glue tabel yang menggunakan `CREATE_TIME_SERIES` fungsi Timestream. Anda juga perlu menyediakan skema untuk tampilan yang menggunakan sintaks `ARRAY<STRUCT<time:timestamp,measure_value::double:double>>` sebagai tipe untuk kolom deret waktu Anda. Pastikan untuk mengganti `double` dengan jenis skalar yang sesuai untuk tabel Anda.

Gambar berikut menunjukkan contoh properti AWS Glue tabel dikonfigurasi untuk mengatur tampilan selama deret waktu.

![\[Mengkonfigurasi properti tabel AWS Glue untuk mengatur tampilan selama deret waktu.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-timestream-1.png)


## Izin yang Diperlukan
<a name="connectors-timestream-required-permissions"></a>

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian file [athena-timestream.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-timestream/athena-timestream.yaml). Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
+ **AWS Glue Data Catalog**- Konektor Timestream membutuhkan akses baca saja ke AWS Glue Data Catalog untuk mendapatkan informasi skema.
+ **CloudWatch Log** — Konektor memerlukan akses ke CloudWatch Log untuk menyimpan log.
+ **Akses Timestream** — Untuk menjalankan kueri Timestream.

## Performa
<a name="connectors-timestream-performance"></a>

Kami menyarankan Anda menggunakan `LIMIT` klausa untuk membatasi data yang dikembalikan (bukan data yang dipindai) hingga kurang dari 256 MB untuk memastikan bahwa kueri interaktif berkinerja baik.

Konektor Athena Timestream melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa mengurangi jumlah data yang dipindai, tetapi jika Anda tidak memberikan predikat, Anda harus mengharapkan `SELECT` kueri dengan `LIMIT` klausa untuk memindai setidaknya 16 MB data. Memilih subset kolom secara signifikan mempercepat runtime kueri dan mengurangi data yang dipindai. Konektor Timestream tahan terhadap throttling karena konkurensi.

## Kueri passthrough
<a name="connectors-timestream-passthrough-queries"></a>

Konektor Timestream mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Timestream, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di Timestream. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-timestream-license-information"></a>

[Proyek konektor Timestream Amazon Athena dilisensikan di bawah Lisensi Apache-2.0.](https://www.apache.org/licenses/LICENSE-2.0.html)

## Sumber daya tambahan
<a name="connectors-timestream-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-timestream) GitHub di.com.

# Konektor DS (TPC-DS) patokan Amazon Athena TPC
<a name="connectors-tpcds"></a>

Konektor Amazon Athena TPC-DS memungkinkan Amazon Athena untuk berkomunikasi dengan sumber data TPC Benchmark DS yang dihasilkan secara acak untuk digunakan dalam pembandingan dan pengujian fungsional Federasi Athena. Konektor Athena TPC-DS menghasilkan basis data yang sesuai dengan TPC-DS pada salah satu dari empat faktor skala. Kami tidak merekomendasikan penggunaan konektor ini sebagai alternatif untuk tes kinerja data lake berbasis Amazon S3.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

## Prasyarat
<a name="connectors-tpcds-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Parameter
<a name="connectors-tpcds-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor TPC-DS.

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue   
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### Koneksi lem (disarankan)
<a name="connectors-tpcds-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor TPC-DS dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor TPC-DS Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type TPCDS
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor TPC-DS yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor TPC-DS yang dibuat menggunakan koneksi Glue hanya mendukung 2. `ConnectionSchemaVersion`

### Koneksi warisan
<a name="connectors-tpcds-legacy"></a>
+ **spill\$1bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\$1prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\$1put\$1request\$1headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\$1key\$1id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\$1spill\$1encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)

## Uji database dan tabel
<a name="connectors-tpcds-test-databases-and-tables"></a>

Konektor Athena TPC-DS menghasilkan database yang sesuai dengan TPC-DS di salah satu dari empat faktor skala,,,, atau. `tpcds1` `tpcds10` `tpcds100` `tpcds250` `tpcds1000`

### Ringkasan tabel
<a name="connectors-tpcds-table-summary"></a>

Untuk daftar lengkap tabel dan kolom data pengujian, jalankan `SHOW TABLES` atau `DESCRIBE TABLE` kueri. Ringkasan tabel berikut disediakan untuk kenyamanan.

1. call\$1center

1. catalog\$1page

1. catalog\$1returns

1. catalog\$1sales

1. pelanggan

1. customer\$1address

1. customer\$1demografi

1. date\$1dim

1. dbgen\$1version

1. demografi rumah tangga

1. pendapatan\$1band

1. inventaris

1. item

1. promosi

1. akal budi

1. ship\$1mode

1. Toko

1. store\$1returns

1. store\$1sales

1. waktu\$1redup

1. gudang

1. web\$1halaman

1. web\$1returns

1. web\$1penjualan

1. situs web

Untuk kueri TPC-DS yang kompatibel dengan skema dan data yang dihasilkan ini, lihat direktori [athena](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds/src/main/resources/queries) -/di. tpcds/src/main/resources/queries GitHub

### Kueri contoh
<a name="connectors-tpcds-example-query"></a>

Contoh `SELECT` kueri berikut menanyakan `tpcds` katalog untuk demografi pelanggan di kabupaten tertentu.

```
SELECT
  cd_gender,
  cd_marital_status,
  cd_education_status,
  count(*) cnt1,
  cd_purchase_estimate,
  count(*) cnt2,
  cd_credit_rating,
  count(*) cnt3,
  cd_dep_count,
  count(*) cnt4,
  cd_dep_employed_count,
  count(*) cnt5,
  cd_dep_college_count,
  count(*) cnt6
FROM
  "lambda:tpcds".tpcds1.customer c, "lambda:tpcds".tpcds1.customer_address ca, "lambda:tpcds".tpcds1.customer_demographics
WHERE
  c.c_current_addr_sk = ca.ca_address_sk AND
    ca_county IN ('Rush County', 'Toole County', 'Jefferson County',
                  'Dona Ana County', 'La Porte County') AND
    cd_demo_sk = c.c_current_cdemo_sk AND
    exists(SELECT *
           FROM "lambda:tpcds".tpcds1.store_sales, "lambda:tpcds".tpcds1.date_dim
           WHERE c.c_customer_sk = ss_customer_sk AND
             ss_sold_date_sk = d_date_sk AND
             d_year = 2002 AND
             d_moy BETWEEN 1 AND 1 + 3) AND
    (exists(SELECT *
            FROM "lambda:tpcds".tpcds1.web_sales, "lambda:tpcds".tpcds1.date_dim
            WHERE c.c_customer_sk = ws_bill_customer_sk AND
              ws_sold_date_sk = d_date_sk AND
              d_year = 2002 AND
              d_moy BETWEEN 1 AND 1 + 3) OR
      exists(SELECT *
             FROM "lambda:tpcds".tpcds1.catalog_sales, "lambda:tpcds".tpcds1.date_dim
             WHERE c.c_customer_sk = cs_ship_customer_sk AND
               cs_sold_date_sk = d_date_sk AND
               d_year = 2002 AND
               d_moy BETWEEN 1 AND 1 + 3))
GROUP BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
ORDER BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
LIMIT 100
```

## Izin yang Diperlukan
<a name="connectors-tpcds-required-permissions"></a>

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian file [athena-tpcds.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-tpcds/athena-tpcds.yaml). Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.

## Performa
<a name="connectors-tpcds-performance"></a>

Konektor Athena TPC-DS mencoba memparalelkan kueri berdasarkan faktor skala yang Anda pilih. Predikat pushdown dilakukan dalam fungsi Lambda.

## Informasi lisensi
<a name="connectors-tpcds-license-information"></a>

[Proyek konektor Amazon Athena TPC-DS dilisensikan di bawah Lisensi Apache-2.0.](https://www.apache.org/licenses/LICENSE-2.0.html)

## Sumber daya tambahan
<a name="connectors-tpcds-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds) GitHub di.com.

# Konektor Amazon Athena Vertica
<a name="connectors-vertica"></a>

Vertica adalah platform basis data kolumnar yang dapat digunakan di cloud atau di tempat yang mendukung gudang data skala exabyte. Anda dapat menggunakan konektor Amazon Athena Vertica dalam kueri gabungan untuk mengkueri sumber data Vertica dari Athena. Misalnya, Anda dapat menjalankan kueri analitis atas data warehouse di Vertica dan danau data di Amazon S3.

Konektor ini tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

## Prasyarat
<a name="connectors-vertica-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).
+ Siapkan VPC dan grup keamanan sebelum Anda menggunakan konektor ini. Untuk informasi selengkapnya, lihat [Buat VPC untuk konektor atau koneksi sumber data AWS Glue](athena-connectors-vpc-creation.md).

## Batasan
<a name="connectors-vertica-limitations"></a>
+ Karena konektor Athena Vertica membaca file Parket yang diekspor dari Amazon S3, kinerja konektor bisa lambat. Saat Anda menanyakan tabel besar, kami sarankan Anda menggunakan [CREATE TABLE AS (SELECT...)](ctas.md) query dan predikat SQL.
+ Saat ini, karena masalah yang diketahui di Kueri Federasi Athena, konektor menyebabkan Vertica mengekspor semua kolom tabel kueri ke Amazon S3, tetapi hanya kolom yang ditanyakan yang terlihat di hasil di konsol Athena.
+ Menulis operasi DDL tidak didukung.
+ Batas Lambda yang relevan. Untuk informasi selengkapnya, lihat [Kuota Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dalam *Panduan Pengembang AWS Lambda *.

## Alur kerja
<a name="connectors-vertica-workflow"></a>

Diagram berikut menunjukkan alur kerja kueri yang menggunakan konektor Vertica.

![\[Alur kerja kueri Vertica dari Amazon Athena\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-vertica-1.png)


1. Kueri SQL dikeluarkan terhadap satu atau lebih tabel di Vertica.

1. Konektor mem-parsing query SQL untuk mengirim bagian yang relevan ke Vertica melalui koneksi JDBC.

1. String koneksi menggunakan nama pengguna dan kata sandi yang disimpan AWS Secrets Manager untuk mendapatkan akses ke Vertica.

1. Konektor membungkus query SQL dengan `EXPORT` perintah Vertica, seperti pada contoh berikut.

   ```
   EXPORT TO PARQUET (directory = 's3://amzn-s3-demo-bucket/folder_name, 
      Compression='Snappy', fileSizeMB=64) OVER() as 
   SELECT
   PATH_ID,
   ...
   SOURCE_ITEMIZED,
   SOURCE_OVERRIDE
   FROM DELETED_OBJECT_SCHEMA.FORM_USAGE_DATA
   WHERE PATH_ID <= 5;
   ```

1. Vertica memproses kueri SQL dan mengirimkan hasil yang disetel ke bucket Amazon S3. Untuk throughput yang lebih baik, Vertica menggunakan `EXPORT` opsi untuk memparalelkan operasi penulisan beberapa file Parket.

1. Athena memindai bucket Amazon S3 untuk menentukan jumlah file yang akan dibaca untuk set hasil.

1. Athena membuat beberapa panggilan ke fungsi Lambda dan menggunakan Apache `ArrowReader` untuk membaca file Parket dari kumpulan data yang dihasilkan. Beberapa panggilan memungkinkan Athena untuk memparalelkan pembacaan file Amazon S3 dan mencapai throughput hingga 100GB per detik.

1. Athena memproses data yang dikembalikan dari Vertica dengan data yang dipindai dari danau data dan mengembalikan hasilnya.

## Ketentuan
<a name="connectors-vertica-terms"></a>

Istilah-istilah berikut berhubungan dengan konektor Vertica.
+ **Instans database** — Setiap instance dari database Vertica yang digunakan di Amazon EC2.
+ **Handler** - Handler Lambda yang mengakses instance database Anda. Handler bisa untuk metadata atau untuk catatan data.
+ **Metadata handler** — Penangan Lambda yang mengambil metadata dari instance database Anda.
+ **Record handler** - Handler Lambda yang mengambil catatan data dari instance database Anda.
+ **Composite handler** — Handler Lambda yang mengambil data metadata dan data dari instance database Anda.
+ **Properti atau parameter** - Properti database yang digunakan oleh penangan untuk mengekstrak informasi database. Anda mengonfigurasi properti ini sebagai variabel lingkungan Lambda.
+ **Connection String** — Sebuah string teks yang digunakan untuk membuat koneksi ke instance database.
+ **Katalog** —AWS Glue Non-katalog yang terdaftar di Athena yang merupakan awalan yang diperlukan untuk properti. `connection_string`

## Parameter
<a name="connectors-vertica-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor Vertica.

### Koneksi Glue (disarankan)
<a name="connectors-vertica-gc"></a>

Kami menyarankan Anda mengonfigurasi konektor Vertica dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor Vertica Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type VERTICA
```

**Properti lingkungan Lambda**
+ **glue\$1connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 
+ **casing\$1mode** - (Opsional) Menentukan bagaimana menangani casing untuk skema dan nama tabel. `casing_mode`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku casing:
  + **none** — Jangan mengubah kasus skema dan nama tabel yang diberikan. Ini adalah default untuk konektor yang memiliki koneksi lem terkait. 
  + **atas** — huruf besar semua skema yang diberikan dan nama tabel.
  + **lower** — huruf kecil semua skema dan nama tabel yang diberikan.

**catatan**  
Semua konektor yang menggunakan koneksi Glue harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor Vertica yang dibuat menggunakan koneksi Glue tidak mendukung penggunaan handler multiplexing.
Konektor Vertica yang dibuat menggunakan koneksi Glue hanya mendukung `ConnectionSchemaVersion` 2.

### Koneksi warisan
<a name="connectors-vertica-legacy"></a>

Konektor Amazon Athena Vertica memperlihatkan opsi konfigurasi melalui variabel lingkungan Lambda. Anda dapat menggunakan variabel lingkungan Lambda berikut untuk mengkonfigurasi konektor. 
+  **AthenaCatalogName**— Nama fungsi Lambda 
+  **ExportBucket**- Bucket Amazon S3 tempat hasil kueri Vertica diekspor. 
+  **SpillBucket**— Nama bucket Amazon S3 tempat fungsi ini dapat menumpahkan data. 
+  **SpillPrefix**— Awalan untuk `SpillBucket` lokasi di mana fungsi ini dapat menumpahkan data. 
+  **SecurityGroupIds**— Satu atau lebih IDs yang sesuai dengan grup keamanan yang harus diterapkan pada fungsi Lambda (misalnya,, `sg1``sg2`, atau`sg3`). 
+  **SubnetIds**— Satu atau lebih subnet IDs yang sesuai dengan subnet yang dapat digunakan fungsi Lambda untuk mengakses sumber data Anda (misalnya,, `subnet1` atau). `subnet2` 
+  **SecretNameOrPrefix**— Nama atau awalan dari satu set nama di Secrets Manager yang fungsi ini memiliki akses ke (misalnya,`vertica-*`) 
+  **VerticaConnectionString**— Detail koneksi Vertica untuk digunakan secara default jika tidak ada koneksi khusus katalog yang ditentukan. String secara opsional dapat menggunakan AWS Secrets Manager sintaks (misalnya,`${secret_name}`). 
+  ID **VPC — ID** VPC yang akan dilampirkan ke fungsi Lambda. 

#### String koneksi
<a name="connectors-vertica-connection-string"></a>

Gunakan string koneksi JDBC dalam format berikut untuk terhubung ke instance database.

```
vertica://jdbc:vertica://host_name:
                        port/database?user=vertica-username&password=
                        vertica-password
```

#### Menggunakan handler koneksi tunggal
<a name="connectors-vertica-using-a-single-connection-handler"></a>

Anda dapat menggunakan metadata koneksi tunggal berikut dan penangan rekaman untuk terhubung ke satu instance Vertica.


****  

| Jenis handler | Kelas | 
| --- | --- | 
| Handler komposit | VerticaCompositeHandler | 
| Penangan metadata | VerticaMetadataHandler | 
| Rekam handler | VerticaRecordHandler | 

#### Parameter handler koneksi tunggal
<a name="connectors-vertica-single-connection-handler-parameters"></a>


****  

| Parameter | Deskripsi | 
| --- | --- | 
| default | Wajib. String koneksi default. | 

Penangan koneksi tunggal mendukung satu instance database dan harus menyediakan parameter string `default` koneksi. Semua string koneksi lainnya diabaikan.

#### Memberikan kredensi
<a name="connectors-vertica-providing-credentials"></a>

Untuk memberikan nama pengguna dan kata sandi untuk database Anda dalam string koneksi JDBC Anda, Anda dapat menggunakan properti string koneksi atau. AWS Secrets Manager
+ **Connection String** - Nama pengguna dan kata sandi dapat ditentukan sebagai properti dalam string koneksi JDBC.
**penting**  
Sebagai praktik keamanan terbaik, jangan gunakan kredensi hardcode dalam variabel lingkungan atau string koneksi Anda. *Untuk informasi tentang memindahkan rahasia hardcode Anda AWS Secrets Manager, lihat [Memindahkan rahasia hardcode ke AWS Secrets Manager dalam Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) Pengguna.AWS Secrets Manager *
+ **AWS Secrets Manager**[— Untuk menggunakan fitur Query Federasi Athena dengan, VPC AWS Secrets Manager yang terhubung ke fungsi Lambda Anda harus memiliki [akses internet atau](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Anda dapat memasukkan nama rahasia ke AWS Secrets Manager dalam string koneksi JDBC Anda. Konektor menggantikan nama rahasia dengan `password` nilai `username` dan dari Secrets Manager.

  Untuk instans database Amazon RDS, dukungan ini terintegrasi dengan erat. Jika Anda menggunakan Amazon RDS, kami sangat menyarankan penggunaan AWS Secrets Manager dan rotasi kredenal. Jika database Anda tidak menggunakan Amazon RDS, simpan kredensialnya sebagai JSON dalam format berikut:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Contoh string koneksi dengan nama rahasia**  
String berikut memiliki nama rahasia \$1 \$1`vertica-username`\$1 dan`${vertica-password}`. 

```
vertica://jdbc:vertica://
                        host_name:port/database?user=${vertica-username}&password=${vertica-password}
```

Konektor menggunakan nama rahasia untuk mengambil rahasia dan memberikan nama pengguna dan kata sandi, seperti pada contoh berikut.

```
vertica://jdbc:vertica://
                        host_name:port/database?user=sample-user&password=sample-password
```

Saat ini, konektor Vertica mengenali properti `vertica-username` dan `vertica-password` JDBC. 

#### Parameter tumpahan
<a name="connectors-vertica-spill-parameters"></a>

Lambda SDK dapat menumpahkan data ke Amazon S3. Semua instance database yang diakses oleh fungsi Lambda yang sama tumpah ke lokasi yang sama.


****  

| Parameter | Deskripsi | 
| --- | --- | 
| spill\$1bucket | Wajib. Nama ember tumpahan. | 
| spill\$1prefix | Wajib. Tumpahkan key prefix bucket. | 
| spill\$1put\$1request\$1headers | (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject \$1"x-amz-server-side-encryption" : "AES256"\$1 Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di Referensi API Amazon Simple Storage Service. | 

## Dukungan tipe data
<a name="connectors-vertica-data-type-support"></a>

Tabel berikut menunjukkan tipe data yang didukung untuk konektor Vertica.


****  

| Boolean | 
| --- | 
| BigInt | 
| Pendek | 
| Bilangan Bulat | 
| Panjang | 
| Desimal | 
| Ganda | 
| Date | 
| Varchar | 
| Byte | 
| BigDecimal | 
| TimeStamp sebagai Varchar | 

## Performa
<a name="connectors-vertica-performance"></a>

Fungsi Lambda melakukan pushdown proyeksi untuk mengurangi data yang dipindai oleh kueri. `LIMIT`klausa mengurangi jumlah data yang dipindai, tetapi jika Anda tidak memberikan predikat, Anda harus mengharapkan `SELECT` kueri dengan `LIMIT` klausa untuk memindai setidaknya 16 MB data. Konektor Vertica tahan terhadap pelambatan karena konkurensi.

## Kueri passthrough
<a name="connectors-vertica-passthrough-queries"></a>

Konektor Vertica mendukung kueri [passthrough](federated-query-passthrough.md). Kueri passthrough menggunakan fungsi tabel untuk mendorong kueri lengkap Anda ke sumber data untuk dieksekusi.

Untuk menggunakan kueri passthrough dengan Vertica, Anda dapat menggunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

Contoh query berikut mendorong ke bawah query ke sumber data di Vertica. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informasi lisensi
<a name="connectors-vertica-license-information"></a>

Dengan menggunakan konektor ini, Anda mengakui penyertaan komponen pihak ketiga, daftar yang dapat ditemukan dalam file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/pom.xml) untuk konektor ini, dan menyetujui persyaratan dalam masing-masing lisensi pihak ketiga yang disediakan dalam file [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/LICENSE.txt) di .com. GitHub

## Sumber daya tambahan
<a name="connectors-vertica-additional-resources"></a>

Untuk informasi versi driver JDBC terbaru, lihat file [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/pom.xml) untuk konektor Vertica di.com. GitHub

*Untuk informasi tambahan tentang konektor ini, lihat [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-vertica) GitHub di.com dan [Menanyakan sumber data Vertica di Amazon Athena menggunakan Athena Federated Query](https://aws.amazon.com/blogs/big-data/querying-a-vertica-data-source-in-amazon-athena-using-the-athena-federated-query-sdk/) SDK di Blog Big Data.AWS *

# Buat koneksi sumber data
<a name="connect-to-a-data-source"></a>

Untuk menggunakan konektor sumber data Athena, Anda membuat AWS Glue koneksi yang menyimpan informasi koneksi tentang konektor dan sumber data Anda. Saat Anda membuat koneksi, Anda memberi sumber data nama yang akan Anda gunakan untuk mereferensikan sumber data Anda dalam kueri SQL Anda.

Anda dapat membuat dan mengonfigurasi koneksi sumber data di Athena menggunakan [konsol](connect-to-a-data-source-console-steps.md) atau operasi [CreateDataCatalogAPI](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateDataCatalog.html).

**Topics**
+ [Izin untuk membuat dan menggunakan sumber data di Athena](connect-to-a-data-source-permissions.md)
+ [Menggunakan konsol Athena untuk terkoneksi ke sumber data](connect-to-a-data-source-console-steps.md)
+ [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md)
+ [Buat VPC untuk konektor atau koneksi sumber data AWS Glue](athena-connectors-vpc-creation.md)
+ [Tarik gambar ECR ke akun Anda AWS](pull-ecr-customer-account.md)
+ [Daftarkan koneksi Anda sebagai Glue Data Catalog](register-connection-as-gdc.md)
+ [Aktifkan kueri federasi lintas akun](xacct-fed-query-enable.md)
+ [Perbarui konektor sumber data](connectors-updating.md)

# Izin untuk membuat dan menggunakan sumber data di Athena
<a name="connect-to-a-data-source-permissions"></a>

Untuk membuat dan menggunakan sumber data, Anda memerlukan set izin berikut.
+ AmazonAthenaFullAccess yang menyediakan akses penuh ke Amazon Athena dan akses cakupan ke dependensi yang diperlukan untuk mengaktifkan kueri, menulis hasil, dan manajemen data. Untuk informasi selengkapnya, lihat [AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)di Panduan Referensi Kebijakan AWS Terkelola.
+ Izin untuk memanggil CreateDataCatalog API. Izin ini hanya diperlukan saat Anda membuat sumber data yang terintegrasi dengan koneksi Glue. Untuk informasi selengkapnya tentang kebijakan contoh, lihat[Izin diperlukan untuk membuat konektor dan katalog Athena](athena-catalog-access.md).
+ Jika Anda ingin menggunakan kontrol akses butiran halus Lake Formation, selain izin yang tercantum di atas, Anda juga memerlukan izin berikut.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lakeformation:RegisterResource",
          "iam:ListRoles",
          "glue:CreateCatalog",
          "glue:GetCatalogs",
          "glue:GetCatalog"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

------

# Menggunakan konsol Athena untuk terkoneksi ke sumber data
<a name="connect-to-a-data-source-console-steps"></a>

Anda dapat menggunakan konsol Athena untuk membuat dan mengonfigurasi koneksi sumber data.

**Untuk membuat koneksi ke sumber data**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih **Buat sumber data**.

1. Untuk **Pilih sumber data**, pilih sumber data yang ingin Athena kueri, dengan mempertimbangkan pedoman berikut:
   + Pilih opsi koneksi yang sesuai dengan sumber data Anda. Athena memiliki konektor sumber data siap pakai yang dapat Anda konfigurasikan untuk sumber-sumber seperti MySQL, Amazon DocumentDB, dan PostgreSQL.
   + Pilih **S3 - AWS Glue Data Catalog** jika Anda ingin menanyakan data di Amazon S3 dan Anda tidak menggunakan metastore Apache Hive atau salah satu opsi sumber data kueri gabungan lainnya di halaman ini. Athena menggunakan AWS Glue Data Catalog untuk menyimpan informasi skema dan metadata untuk sumber data di Amazon S3. Ini adalah opsi default (non-federasi). Untuk informasi selengkapnya, lihat [Gunakan AWS Glue Data Catalog untuk terhubung ke data Anda](data-sources-glue.md). Untuk langkah-langkah menggunakan alur kerja ini, lihat[Daftarkan dan gunakan katalog data di Athena](gdc-register.md).
   + Pilih **S3 - Metastore Apache Hive** untuk melakukan kueri set data di Amazon S3 yang menggunakan metastore Apache Hive. Untuk informasi selengkapnya tentang metrik ini, lihat [Hubungkan Athena ke metastore Apache Hive](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md).
   + Pilih **konektor Kustom atau bersama** jika Anda ingin membuat konektor sumber data Anda sendiri untuk digunakan dengan Athena. Untuk informasi tentang menulis konektor sumber data, lihat[Kembangkan konektor sumber data menggunakan Athena Query Federation SDK](connect-data-source-federation-sdk.md).

1. Pilih **Berikutnya**.

1. Pada halaman **Masukkan detail sumber data**, untuk **nama sumber data**, gunakan nama yang dibuat secara otomatis, atau masukkan nama unik yang ingin Anda gunakan dalam pernyataan SQL saat Anda menanyakan sumber data dari Athena. Nama bisa sampai 127 karakter dan harus unik di akun Anda. Itu tidak dapat diubah setelah Anda membuatnya. Karakter yang valid adalah a-z, A-Z, 0-9, \$1 (garis bawah), @ (pada tanda) dan - (tanda hubung). Nama`awsdatacatalog`,, `hive``jmx`, dan dicadangkan `system` oleh Athena dan tidak dapat digunakan untuk nama sumber data. 

1. Jika sumber data yang Anda pilih terintegrasi dengan AWS Glue koneksi.

   1. Untuk **detail AWS Glue koneksi**, masukkan informasi yang diperlukan. Koneksi berisi properti yang diperlukan untuk terhubung ke sumber data tertentu. Properti yang diperlukan bervariasi tergantung pada jenis koneksi. Untuk informasi selengkapnya tentang properti yang terkait dengan konektor Anda, lihat[Konektor sumber data yang tersedia](connectors-available.md). Untuk informasi tentang properti sambungan tambahan, lihat [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) di *Panduan AWS Glue Pengguna*.
**catatan**  
Saat Anda memperbarui properti koneksi Glue, konektor Lambda perlu dimulai ulang untuk mendapatkan properti yang diperbarui. Untuk melakukan ini, edit properti lingkungan dan simpan tanpa benar-benar mengubah apa pun. 
Saat Anda memperbarui koneksi Glue, properti berikut tidak akan diperbarui secara otomatis dalam fungsi Lambda yang sesuai. Anda harus memperbarui fungsi Lambda Anda secara manual untuk properti ini.  
Konfigurasi VPC Lambda —, `security_group_ids` `subnet_ids`
Peran eksekusi Lambda —`spill_bucket`,, `secret_name` `spill_kms_key_id`

   1. Untuk **peran IAM eksekusi Lambda**, pilih salah satu dari berikut ini:
      + **Buat dan gunakan peran eksekusi baru** — (Default) Athena membuat peran eksekusi yang kemudian akan digunakan untuk mengakses sumber daya AWS Lambda atas nama Anda. Athena memerlukan peran ini untuk membuat sumber data federasi Anda.
      + **Gunakan peran eksekusi yang ada** — Gunakan opsi ini untuk memilih peran eksekusi yang ada. Untuk opsi ini, pilih peran eksekusi yang ingin Anda gunakan dari drop-down **peran eksekusi**.

1. Jika sumber data yang Anda pilih tidak terintegrasi dengan AWS Glue koneksi. 

   1. Untuk fungsi **Lambda, pilih fungsi** Buat **Lambda**. Halaman fungsi untuk konektor yang Anda pilih terbuka di AWS Lambda konsol. Halaman ini mencakup informasi rinci tentang konektor.

   1. Di bawah**Pengaturan aplikasi**, baca deskripsi untuk setiap pengaturan aplikasi dengan hati-hati, dan kemudian masukkan nilai yang sesuai dengan kebutuhan Anda.

      Pengaturan aplikasi yang Anda lihat bervariasi tergantung pada konektor untuk sumber data Anda. Pengaturan minimum yang diperlukan meliputi:
      + **AthenaCatalogName**— Nama, dalam huruf kecil, untuk fungsi Lambda yang menunjukkan sumber data yang ditargetkan, seperti. `cloudwatchlogs`
      + **SpillBucket**- Bucket Amazon S3 di akun Anda untuk menyimpan data yang melebihi batas ukuran respons fungsi Lambda.
**catatan**  
Data yang tumpah tidak digunakan kembali dalam eksekusi berikutnya dan dapat dihapus dengan aman. Athena tidak menghapus data ini untuk Anda. Untuk mengelola objek ini, pertimbangkan untuk menambahkan kebijakan siklus hidup objek yang menghapus data lama dari bucket tumpahan Amazon S3 Anda. Untuk informasi selengkapnya, lihat [Mengelola siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) di Panduan Pengguna Amazon S3.

   1. Pilih **Saya mengakui bahwa aplikasi ini membuat peran IAM khusus dan kebijakan sumber daya**. Untuk informasi selengkapnya, pilih tautan **Info**.

   1. Pilih **Deploy**. Saat penerapan selesai, fungsi Lambda muncul di bagian Sumber Daya **di konsol** Lambda.

      Setelah Anda menyebarkan konektor sumber data ke akun Anda, Anda dapat menghubungkan Athena ke sana.

   1. Kembali ke halaman **Masukkan detail sumber data** di konsol Athena.

   1. Di bagian **Detail koneksi**, pilih ikon penyegaran di sebelah **Pilih atau masukkan kotak pencarian fungsi Lambda**.

   1. Pilih nama fungsi yang baru saja Anda buat di konsol Lambda. ARN dari fungsi Lambda ditampilkan.

1. (Opsional) Untuk **Tag**, tambahkan pasangan nilai kunci untuk dikaitkan dengan sumber data ini. Untuk informasi selengkapnya tentang tag, lihat [Tag sumber daya Athena](tags.md).

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, tinjau detail sumber data. Untuk membuat perubahan, pilih **Edit**. 

1. Baca informasi di **Athena akan membuat sumber daya di akun Anda**. Jika Anda setuju, pilih **Saya mengakui bahwa Athena akan membuat sumber daya atas** nama saya.

1. Pilih **Buat sumber data**. **Athena** akan membuat sumber daya berikut untuk Anda.
   + Peran IAM eksekusi Lambda
   + AWS Glue koneksi (hanya jika sumber data kompatibel dengan AWS Glue Koneksi)
   + Fungsi Lambda

Bagian **Detail sumber data** pada halaman untuk sumber data Anda menunjukkan informasi tentang konektor baru Anda. Anda sekarang dapat menggunakan konektor dalam kueri Athena Anda. 

Untuk informasi tentang penggunaan konektor data dalam kueri, lihat[Jalankan kueri federasi](running-federated-queries.md).

# Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data
<a name="connect-data-source-serverless-app-repo"></a>

Untuk menggunakan konektor sumber data, Anda dapat menggunakan [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/)alih-alih menggunakan AWS Glue koneksi.

**catatan**  
Kami menyarankan Anda menggunakan SAR hanya jika Anda memiliki konektor khusus atau memerlukan penggunaan konektor yang lebih lama. Jika tidak, penggunaan konsol Athena disarankan. 

Anda dapat menggunakan AWS Serverless Application Repository untuk menemukan konektor yang ingin Anda gunakan, memberikan parameter yang dibutuhkan konektor, dan kemudian menyebarkan konektor ke akun Anda. Kemudian, setelah Anda menggunakan konektor, Anda menggunakan konsol Athena untuk membuat sumber data tersedia untuk Athena.

## Menyebarkan konektor ke Akun Anda
<a name="connect-data-source-serverless-app-repo-deploying"></a>

**Untuk menggunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data ke akun Anda**

1. Masuk ke Konsol Manajemen AWS dan buka Repositori **Aplikasi Tanpa Server**.

1. Di panel navigasi, pilih**Aplikasi yang tersedia**.

1. Pilih opsi**Menampilkan aplikasi yang membuat IAM role khusus atau kebijakan sumber daya**.

1. Di kotak pencarian, ketik nama konektor. Untuk daftar konektor data Athena prebuilt, lihat[Konektor sumber data yang tersedia](connectors-available.md).

1. Pilih nama konektornya. Memilih konektor membuka halaman **Detail aplikasi** fungsi Lambda di konsol. AWS Lambda 

1. Di sisi kanan halaman detail, untuk **pengaturan Aplikasi**, isi informasi yang diperlukan. Pengaturan minimum yang diperlukan meliputi yang berikut ini. Untuk informasi tentang opsi lain yang dapat dikonfigurasi untuk konektor data yang dibuat oleh Athena, lihat topik Konektor [yang tersedia terkait](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors) di. GitHub
   + **AthenaCatalogName**— Nama untuk fungsi Lambda dalam huruf kecil yang menunjukkan sumber data yang ditargetkan, seperti. `cloudwatchlogs`
   + **SpillBucket**— Tentukan bucket Amazon S3 di akun Anda untuk menerima data dari muatan respons besar yang melebihi batas ukuran respons fungsi Lambda.

1. Pilih **Saya mengakui bahwa aplikasi ini membuat peran IAM khusus dan kebijakan sumber daya**. Untuk informasi selengkapnya, pilih tautan **Info**.

1. Di kanan bawah bagian **Pengaturan aplikasi**, pilih **Deploy**. Saat penerapan selesai, fungsi Lambda muncul di bagian Sumber Daya **di konsol** Lambda.

## Membuat konektor tersedia di Athena
<a name="connect-data-source-serverless-app-repo-making-the-connector-available-in-athena"></a>

Sekarang Anda siap menggunakan konsol Athena untuk membuat konektor sumber data tersedia untuk Athena.

**Untuk membuat konektor sumber data tersedia untuk Athena**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih **Buat sumber data**.

1. Untuk **Pilih sumber data**, pilih sumber data yang Anda buat konektornya di AWS Serverless Application Repository. Tutorial ini menggunakan **Amazon CloudWatch Logs** sebagai sumber data federasi.

1. Pilih **Berikutnya**.

1. Pada halaman **Masukkan detail sumber data**, untuk **nama sumber data**, masukkan nama yang ingin Anda gunakan dalam pernyataan SQL saat Anda menanyakan sumber data dari Athena (misalnya`CloudWatchLogs`,). Nama bisa sampai 127 karakter dan harus unik di akun Anda. Itu tidak dapat diubah setelah Anda membuatnya. Karakter yang valid adalah a-z, A-Z, 0-9, \$1 (garis bawah), @ (pada tanda) dan - (tanda hubung). Nama`awsdatacatalog`,, `hive``jmx`, dan dicadangkan `system` oleh Athena dan tidak dapat digunakan untuk nama sumber data. 

1. Di bagian **Detail koneksi**, gunakan kotak **Pilih atau masukkan fungsi Lambda** untuk memilih nama fungsi yang baru saja Anda buat. ARN dari fungsi Lambda ditampilkan.

1. (Opsional) Untuk **Tag**, tambahkan pasangan nilai kunci untuk dikaitkan dengan sumber data ini. Untuk informasi selengkapnya tentang tag, lihat [Tag sumber daya Athena](tags.md).

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, tinjau detail sumber data, lalu pilih **Buat sumber data**. 

1. Bagian **Detail sumber data** pada halaman untuk sumber data Anda menunjukkan informasi tentang konektor baru Anda. Anda sekarang dapat menggunakan konektor dalam kueri Athena Anda. 

   Untuk informasi tentang penggunaan konektor data dalam kueri, lihat[Jalankan kueri federasi](running-federated-queries.md).

# Buat VPC untuk konektor atau koneksi sumber data AWS Glue
<a name="athena-connectors-vpc-creation"></a>

Beberapa konektor dan AWS Glue koneksi sumber data Athena memerlukan VPC dan grup keamanan. Topik ini menunjukkan cara membuat VPC dengan subnet dan grup keamanan untuk VPC. Sebagai bagian dari proses ini, Anda mengambil IDs untuk VPC, subnet, dan grup keamanan yang Anda buat. Ini IDs diperlukan saat Anda mengonfigurasi AWS Glue koneksi atau konektor sumber data untuk digunakan dengan Athena.

**Untuk membuat VPC untuk konektor sumber data Athena**

1. Masuk ke Konsol Manajemen AWS dan buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Pilih **Buat VPC**.

1. **Pada halaman **Buat VPC**, di bawah **Pengaturan VPC**, **agar Sumber Daya dapat dibuat,** pilih VPC dan lainnya.**

1. Di bawah **Generasi otomatis tag nama**, untuk **Generasi otomatis**, masukkan nilai yang akan digunakan untuk menghasilkan tag nama untuk semua sumber daya di VPC Anda.

1. Pilih **Buat VPC**.

1. Ketika proses selesai, pilih **Lihat VPC**.

1. Di bagian **Detail**, untuk ID **VPC, salin ID** VPC Anda untuk referensi nanti.

Sekarang Anda siap untuk mengambil subnet ID untuk VPC yang baru saja Anda buat.

**Untuk mengambil ID subnet VPC Anda**

1. **Di panel navigasi konsol VPC, pilih Subnet.**

1. Pilih nama subnet yang kolom **VPC-nya** memiliki ID VPC yang Anda catat.

1. Di bagian **Detail**, untuk **Subnet ID**, salin subnet ID Anda untuk referensi nanti.

Selanjutnya, Anda membuat grup keamanan untuk VPC Anda.

**Untuk membuat grup keamanan untuk VPC Anda**

1. **Di panel navigasi konsol VPC, pilih **Keamanan, Grup Keamanan**.**

1. Pilih **Buat grup keamanan**.

1. Pada halaman **Buat grup keamanan**, masukkan informasi berikut:
   + Untuk **nama grup Keamanan**, masukkan nama untuk grup keamanan Anda.
   + Untuk **Deskripsi**, masukkan deskripsi untuk grup keamanan. Diperlukan deskripsi.
   + Untuk **VPC**, pilih ID VPC dari VPC yang Anda buat untuk konektor sumber data Anda.
   + Untuk aturan **Inbound dan aturan** **Outbound, tambahkan aturan** masuk dan keluar yang Anda butuhkan.

1. Pilih **Buat grup keamanan**.

1. Pada halaman **Detail** untuk grup keamanan, salin **ID grup Keamanan** untuk referensi selanjutnya.

## Pertimbangan penting untuk menggunakan VPC dengan konektor Athena
<a name="vpc-warning-instructions"></a>

Petunjuk berikut berlaku untuk semua konektor Athena, karena semua konektor dapat menggunakan VPC.

**catatan**  
Saat menggunakan VPC dengan koneksi AWS Glue, Anda perlu mengatur titik akhir berikut: PrivateLink   
Amazon S3
AWS Glue
AWS Secrets Manager

Atau, Anda dapat menggunakan akses internet publik, meskipun ini tidak disarankan untuk alasan keamanan.

**Awas**  
Menggunakan akses internet publik dapat mengekspos sumber daya Anda untuk risiko keamanan tambahan. Sangat disarankan untuk menggunakan PrivateLink titik akhir untuk meningkatkan keamanan dalam konfigurasi VPC Anda.

# Tarik gambar ECR ke akun Anda AWS
<a name="pull-ecr-customer-account"></a>

Konektor federasi Athena Fungsi Lambda menggunakan gambar kontainer yang disimpan di repositori Amazon ECR yang dikelola Athena. Untuk melakukan pemindaian keamanan pada gambar kontainer ini, Anda harus terlebih dahulu menyalinnya ke repositori Amazon ECR di akun Anda. Bagian ini memberikan step-by-step petunjuk tentang cara menyalin gambar ke repositori Anda dan mengonfigurasi fungsi Lambda Anda untuk menggunakan gambar.

## Prasyarat
<a name="pull-ecr-customer-account-prereq"></a>
+ Konektor Federasi Athena — Konektor dapat dibuat melalui sumber apa pun, asalkan menggunakan gambar kontainer.
**catatan**  
Untuk memverifikasi penyebaran gambar, periksa tab Gambar di Lambda Konektor Federasi Athena Anda
+ Docker diinstal dan dijalankan
+ AWS CLI dipasang
+ Kredensi akun dengan izin tarik yang sesuai

## Cara mentransfer gambar
<a name="image-transfer-procedure"></a>

1. Temukan URI Gambar dari Lambda Konektor Federasi Athena Anda  
**Example**  

   ```
   account_id_1.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.15.1
   ```

1. Buat token otentikasi Docker untuk akun yang dikelola Athena:

   ```
   aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin athena-managed-registry
   ```

   Di mana:
   + *regionID*adalah wilayah penerapan Anda (misalnya, us-east-1)
   + *athena-managed-registry*adalah bagian registri dari URI Gambar (misalnya, account\$1id\$11.dkr. ecr.us-east-1.amazonaws.com)

1. Tarik gambar dari akun terkelola Athena:

   ```
   docker pull athenaImageURI
   ```

1. Otentikasi Docker ke registri Anda:

   ```
   aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin customer-registry
   ```

   Di mana *customer-registry* registri ECR Anda (misalnya, account\$1id\$12.dkr. ecr.us-east-1.amazonaws.com)

1. Tandai gambar yang ditarik untuk repositori Anda:

   ```
   docker tag athenaImageURI yourImageURI
   ```

1. Dorong gambar ke repositori Anda:

   ```
   docker push yourImageURI
   ```

1. Perbarui Konektor Federasi Athena Anda:

   1. Arahkan ke fungsi Lambda Anda

   1. Pilih **Deploy New Image**

   1. Masukkan URI gambar baru Anda

   Gambar konektor federasi Athena sekarang terletak di akun Anda, yang memungkinkan Anda melakukan pemindaian CVE pada gambar.

# Daftarkan koneksi Anda sebagai Glue Data Catalog
<a name="register-connection-as-gdc"></a>

Setelah membuat sumber data, Anda dapat menggunakan konsol Athena untuk mendaftarkan koneksi Anda sebagai Katalog Data Glue. Setelah terdaftar, Anda dapat mengelola katalog data federasi Anda dan mengaktifkan kontrol akses berbutir halus menggunakan Lake Formation. Untuk informasi selengkapnya, lihat [Membuat katalog federasi](https://docs.aws.amazon.com/lake-formation/latest/dg/create-fed-catalog-data-source.html).

Anda dapat mendaftarkan konektor berikut untuk diintegrasikan dengan kontrol AWS Glue akses berbutir halus.
+ Redshift
+ BigQuery
+ DynamoDB (Pratinjau)
+ Snowflake (Pratinjau)
+ MySQL
+ PostgreSQL
+ AWS CMDB
+ Timestream
+ Penyimpanan Danau Data Azure
+ Sinaps Azure
+ IBM Db2
+ IBM Db2 AS/400 (Db2 iSeries)
+ DocumentDB
+ Penyimpanan Awan Google
+ HBase
+ OpenSearch
+ Oracle
+ SAP HANA
+ SQL Server
+ TPC-DS
+ Sarang Cloudera
+ Cloudwatch
+ Metrik Cloudwatch
+ Teradata
+ Vertica

## Prasyarat
<a name="register-connection-as-gdc-pre"></a>

Sebelum Anda mulai, Anda harus menyelesaikan prasyarat berikut.
+ Pastikan Anda memiliki peran dan izin yang diperlukan untuk mendaftarkan lokasi. Untuk informasi selengkapnya, lihat [Persyaratan peran](https://docs.aws.amazon.com/lake-formation/latest/dg/registration-role.html) di Panduan AWS Lake Formation Pengembang.
+ Pastikan Anda memiliki peran Lake Formation yang diperlukan. Untuk informasi selengkapnya, lihat [Prasyarat untuk menghubungkan Katalog Data ke sumber data eksternal](https://docs.aws.amazon.com/lake-formation/latest/dg/federated-catalog-data-connection.html) di Panduan Pengembang. AWS Lake Formation 
+ Peran yang Anda daftarkan di Glue harus memiliki izin seperti yang tercantum dalam contoh berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket",
                  "s3:GetObject"
              ],
              "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket/spill-prefix/*",
      "arn:aws:s3:::amzn-s3-demo-bucket/spill-prefix"
              ]
          },
          {
              "Sid": "lambdainvoke",
              "Effect": "Allow",
              "Action": "lambda:InvokeFunction",
              "Resource": "arn:aws:lambda:us-east-1:111122223333:function:lambda_function_name"
          },
          {
              "Sid": "gluepolicy",
              "Effect": "Allow",
              "Action": "glue:*",
              "Resource": [
              "arn:aws:glue:us-east-1:111122223333:connection/<connection_name>",
      "arn:aws:glue:us-east-1:111122223333:catalog"
              ]
          }
      ]
  }
  ```

------
+ Anda bertanggung jawab untuk menentukan dan mengelola akses data yang sesuai. Dengan kontrol akses halus pada kueri federasi, Anda disarankan untuk menggunakan kebijakan terkelola. [AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html) Jika Anda ingin menggunakan kebijakan Anda sendiri, Anda harus memastikan bahwa pengguna yang menjalankan kueri federasi tidak memiliki akses ke sumber daya berikut.
  + `lambda:InvokeFunction`pada konektor Lambda yang ditentukan dalam koneksi Glue
  + Akses lokasi bucket tumpahan di IAM
  + Akses ke koneksi Glue yang terkait dengan katalog federasi Anda
  + Peran Lake Formation di IAM

## Daftarkan koneksi Anda menggunakan konsol
<a name="register-connection-as-gdc-steps"></a>

**Untuk mendaftarkan koneksi Anda sebagai Katalog Data Glue**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Dari daftar **Sumber data**, pilih sumber data yang Anda buat untuk membuka halaman **Detail sumber data**. 

1. Pilih **Memulai dengan AWS Lake Formation**.
**catatan**  
Setelah Anda memilih opsi ini, Anda harus mengelola fungsi Lambda Anda sendiri. Athena tidak akan menghapus fungsi Lambda Anda.

1. Untuk **Data nama katalog** memberikan nama unik untuk katalog Anda.

1. Pilih **peran IAM Lake Formation** yang memberikan izin kepada Lake Formation untuk menjalankan fungsi Lambda. Pastikan peran memiliki izin seperti yang ditunjukkan [pada contoh](#register-connection-as-gdc-pre).

1. Di kotak teks, ketik **konfirmasi** untuk menghapus sumber data Athena, ganti dengan pendaftaran katalog data Glue.
**catatan**  
Tindakan ini akan menghapus sumber data Athena Anda dan membuat Katalog Data Glue baru sebagai gantinya. Setelah proses ini selesai, Anda mungkin perlu memperbarui kueri yang mengakses sumber data untuk merujuk ke katalog data Glue yang baru dibuat.

1. Pilih **Buat katalog dan buka Lake Formation**. Ini membuka konsol Lake Formation tempat Anda dapat mengelola katalog dan memberikan izin kepada pengguna di katalog, database, dan tabel.

# Aktifkan kueri federasi lintas akun
<a name="xacct-fed-query-enable"></a>

Kueri gabungan memungkinkan Anda untuk menanyakan sumber data selain Amazon S3 menggunakan konektor sumber data yang digunakan. AWS Lambda Fitur kueri federasi lintas akun memungkinkan fungsi Lambda dan sumber data yang akan ditanyakan ditempatkan di akun yang berbeda.

**catatan**  
Gunakan metode ini hanya jika Anda belum mendaftarkan sumber data federasi Anda dengan. AWS Glue Data Catalog Jika Anda telah mendaftarkan sumber data Anda dengan AWS Glue Data Catalog, gunakan fitur AWS Glue Data Catalog lintas akun dan model izin. Untuk informasi selengkapnya, lihat [Memberikan akses lintas akun](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html) di *AWS Glue Panduan Pengguna*.

Sebagai administrator data, Anda dapat mengaktifkan kueri federasi lintas akun dengan membagikan konektor data Anda dengan akun analis data atau, sebagai analis data, dengan menggunakan Lambda ARN bersama dari administrator data untuk ditambahkan ke akun Anda. Ketika perubahan konfigurasi dibuat ke konektor di akun asal, konfigurasi yang diperbarui secara otomatis diterapkan ke instance bersama konektor di akun pengguna lain.

## Pertimbangan dan batasan
<a name="xacct-fed-query-enable-considerations-and-limitations"></a>
+ Fitur kueri federasi lintas akun tersedia untuk konektor data metastore non-HIVE yang menggunakan sumber data berbasis Lambda.
+ Fitur ini tidak tersedia untuk tipe sumber AWS Glue Data Catalog data. Untuk informasi tentang akses lintas akun ke AWS Glue Data Catalog s, lihat[Konfigurasikan akses lintas akun ke katalog AWS Glue data](security-iam-cross-account-glue-catalog-access.md).
+ Jika respons dari fungsi Lambda konektor Anda melebihi batas ukuran respons Lambda sebesar 6MB, Athena secara otomatis mengenkripsi, mengelompokkan, dan menumpahkan respons ke bucket Amazon S3 yang Anda konfigurasikan. Entitas yang menjalankan kueri Athena harus memiliki akses ke lokasi tumpahan agar Athena dapat membaca data yang tumpah. Sebaiknya Anda menetapkan kebijakan siklus hidup Amazon S3 untuk menghapus objek dari lokasi tumpahan karena data tidak diperlukan setelah kueri selesai. 
+ Menggunakan kueri federasi di seluruh tidak Wilayah AWS didukung. 

## Izin yang diperlukan
<a name="xacct-fed-query-enable-required-permissions"></a>

Untuk mengatur izin yang diperlukan, tindakan harus dilakukan di Akun A (*444455556666*) dan Akun B (*111122223333*).

### Tindakan untuk Akun A
<a name="xacct-fed-query-enable-required-permissions-account-a"></a>

Agar administrator data Akun A berbagi fungsi Lambda dengan analis data Akun B, Akun B memerlukan fungsi pemanggilan Lambda dan akses tumpahan bucket. Oleh karena itu, Akun A harus menambahkan kebijakan [berbasis sumber daya ke](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) fungsi Lambda dan akses [utama](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html) ke bucket tumpahannya di Amazon S3.

1. Kebijakan berikut memberikan izin fungsi pemanggilan Lambda ke Akun B pada fungsi Lambda di Akun A.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CrossAccountInvocationStatement",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:user/username"
                   ]
               },
               "Action": "lambda:InvokeFunction",
               "Resource": "arn:aws:lambda:us-east-1:444455556666:function:lambda-function-name"
           }
       ]
   }
   ```

------

1. Kebijakan berikut memungkinkan akses bucket tumpahan ke prinsipal di Akun B.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
               "AWS": ["arn:aws:iam::111122223333:user/username"]
               },
               "Action": [
                   "s3:GetObject",
                   "s3:ListBucket"
                ],
               "Resource": [
                   "arn:aws:s3:::spill-bucket",
                   "arn:aws:s3:::spill-bucket/*"
               ]
           }
        ]
    }
   ```

------

1. Jika fungsi Lambda mengenkripsi bucket tumpahan dengan AWS KMS kunci, bukan enkripsi default yang ditawarkan oleh federasi SDK, kebijakan AWS KMS kunci di Akun A harus memberikan akses ke pengguna di Akun B, seperti pada contoh berikut.

   ```
   { 
       "Sid": "Allow use of the key", 
       "Effect": "Allow", 
       "Principal": 
       { 
          "AWS": ["arn:aws:iam::account-B-id:user/username"] 
       }, 
       "Action": [ "kms:Decrypt" ], 
       "Resource": "*" // Resource policy that gets placed on the KMS key. 
    }
   ```

### Tindakan untuk Akun B
<a name="xacct-fed-query-enable-required-permissions-account-b"></a>

Agar Akun A dapat berbagi konektornya dengan Akun B, Akun B harus membuat peran `AthenaCrossAccountCreate-account-A-id` yang disebut Akun A dengan memanggil tindakan [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API Layanan Token AWS Keamanan.

1. Gunakan konsol IAM atau AWS CLI untuk membuat `AthenaCrossAccountCreate-account-A-id` peran sebagai peran kebijakan kepercayaan khusus. Kebijakan kepercayaan khusus mendelegasikan akses dan memungkinkan orang lain melakukan tindakan di AWS akun Anda. Untuk langkah-langkahnya, lihat [Membuat peran menggunakan kebijakan kepercayaan khusus](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) di *Panduan Pengguna IAM*.

   Hubungan kepercayaan harus memiliki objek utama di mana kuncinya `AWS` dan nilainya adalah ARN Akun A, seperti pada contoh berikut.

   ```
   ...
   "Principal": 
   { 
      "AWS": ["arn:aws:iam::account-A-id:user/username"]
   }, 
   ...
   ```

1. Juga di Akun B, buat kebijakan seperti berikut yang memungkinkan `CreateDataCatalog` tindakan. 

   ```
   {
    "Effect": "Allow",
    "Action": "athena:CreateDataCatalog",
    "Resource": "arn:aws:athena:*:account-B-id:datacatalog/*"
   }
   ```

1. Tambahkan kebijakan yang memungkinkan `CreateDataCatalog` tindakan ke `AthenaCrossAccountCreate-account-A-id` peran yang Anda buat menggunakan Akun B. 

## Berbagi sumber data di Akun A dengan Akun B
<a name="xacct-fed-query-enable-sharing-a-lambda-data-source-in-account-a-with-account-b"></a>

Setelah izin diberlakukan, Anda dapat menggunakan halaman **Sumber data dan katalog** di konsol Athena untuk berbagi konektor data di akun Anda (Akun A) dengan akun lain (Akun B). Akun A mempertahankan kontrol penuh dan kepemilikan konektor. Ketika Akun A membuat perubahan konfigurasi pada konektor, konfigurasi yang diperbarui berlaku untuk konektor bersama di Akun B.

**catatan**  
Anda hanya dapat berbagi sumber data tipe Lambda dan tidak dapat berbagi sumber data yang menggunakan AWS Glue koneksi. Untuk informasi selengkapnya, lihat [Konektor sumber data yang tersedia](connectors-available.md).

**Untuk berbagi sumber data Lambda di Akun A dengan Akun B**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih tautan konektor yang ingin Anda bagikan.

1. **Pada halaman detail untuk sumber data Lambda, dari menu **Tindakan** di sudut kanan atas, pilih Bagikan.**

1. Di **Bagikan *Lambda-name* dengan akun lain?** kotak dialog, masukkan informasi yang diperlukan.
   + Untuk **nama sumber data**, masukkan nama sumber data yang disalin seperti yang Anda inginkan muncul di akun lain.
   + Untuk **ID Akun**, masukkan ID akun yang ingin Anda bagikan sumber data Anda (dalam hal ini, Akun B).

1. Pilih **Bagikan**. Konektor data bersama yang Anda tentukan dibuat di Akun B. perubahan konfigurasi ke konektor di Akun A berlaku untuk konektor di Akun B.

## Menambahkan sumber data bersama dari Akun A ke Akun B
<a name="xacct-fed-query-enable-add-a-shared-lambda-function-arn-to-your-account"></a>

Sebagai analis data, Anda mungkin diberikan ARN konektor untuk ditambahkan ke akun Anda dari administrator data. Anda dapat menggunakan halaman **Sumber data dan katalog** konsol Athena untuk menambahkan Lambda ARN yang disediakan oleh administrator ke akun Anda.

**Untuk menambahkan Lambda ARN dari konektor data bersama ke akun Anda**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi tidak terlihat, pilih menu ekspansi di sebelah kiri.

1. Pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih **Buat sumber data**.

1. Pada halaman **Pilih sumber data**, pilih **Konektor kustom atau bersama**.

1. Pilih **Berikutnya**.

1. Pada halaman **Masukkan detail sumber data**, di bagian **Detail koneksi**, untuk **Pilih atau masukkan fungsi Lambda, masukkan Lambda ARN dari Akun A**.

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, pilih **Buat sumber data**.

## Pemecahan masalah
<a name="xacct-fed-query-enable-troubleshooting"></a>

Jika Anda menerima pesan kesalahan bahwa Akun A tidak memiliki izin untuk mengambil peran di Akun B, pastikan bahwa nama peran yang dibuat di Akun B dieja dengan benar dan memiliki kebijakan yang sesuai.

# Perbarui konektor sumber data
<a name="connectors-updating"></a>

Athena merekomendasikan agar Anda secara teratur memperbarui konektor sumber data yang Anda gunakan ke versi terbaru untuk memanfaatkan fitur dan peningkatan baru. Memperbarui konektor sumber data mencakup langkah-langkah berikut:

# Koneksi lem (disarankan)
<a name="connectors-updating-gc"></a>

## Temukan versi Athena Query Federation terbaru
<a name="connectors-updating-finding-the-latest-version"></a>

Nomor versi terbaru konektor sumber data Athena sesuai dengan versi Federasi Kueri Athena terbaru. Dalam kasus tertentu, GitHub rilis bisa sedikit lebih baru dari apa yang tersedia di AWS Serverless Application Repository (SAR).

**Untuk menemukan nomor versi Athena Query Federation terbaru**

1. Kunjungi GitHub URL [https://github.com/awslabs/aws-athena-query-federation/releases/latest](https://github.com/awslabs/aws-athena-query-federation/releases/latest).

1. Perhatikan nomor rilis di judul halaman utama dalam format berikut:

   **Rilis v***year*. *week\$1of\$1year*. *iteration\$1of\$1week***Federasi Kueri Athena**

   Misalnya, nomor rilis untuk **Rilis v2023.8.3 dari Athena Query Federation adalah 2023.8.3**.

## Menemukan versi konektor Anda
<a name="connectors-find-version"></a>

Ikuti langkah-langkah ini untuk menentukan versi konektor yang sedang Anda gunakan.

**Untuk menemukan versi konektor Anda**

1. **Pada halaman konsol Lambda untuk aplikasi Lambda Anda, pilih tab Gambar.**

1. Di bawah tab Gambar, cari URI Gambar. URI mengikuti format ini:

   ```
   Image_location_account.dkr.ecr.us-west-2.amazonaws.com/athena-federation-repository:Version
   ```

1. Nomor versi dalam URI Gambar mengikuti format `year.week_of_year.iteration_of_week` (misalnya,`2021.42.1`). Nomor ini mewakili versi konektor Anda.

## Menyebarkan versi konektor baru
<a name="connectors-deploy-new-version"></a>

Ikuti langkah-langkah ini untuk menerapkan versi baru konektor Anda.

**Untuk menerapkan versi konektor baru**

1. Temukan versi yang diinginkan dengan mengikuti prosedur untuk menemukan versi Federasi Kueri Athena terbaru.

1. Dalam fungsi Lambda konektor federasi, cari ImageUri dan perbarui tag ke versi yang diinginkan. Contoh:

   Dari:

   ```
   509399631660.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.15.1
   ```

   Ke:

   ```
   509399631660.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.26.1
   ```

**catatan**  
Jika versi Anda saat ini lebih tua dari 2025.15.1, perhatikan perubahan penting ini:  
Nama repositori telah diperbarui ke `athena-federation-repository`
Untuk versi sebelum pembaruan ini, penggantian perintah mungkin tidak disetel. Anda harus mengaturnya ke handler komposit.

# Koneksi warisan
<a name="connectors-updating-legacy"></a>

## Temukan versi Athena Query Federation terbaru
<a name="connectors-updating-finding-the-latest-version"></a>

Nomor versi terbaru konektor sumber data Athena sesuai dengan versi Federasi Kueri Athena terbaru. Dalam kasus tertentu, GitHub rilis bisa sedikit lebih baru dari apa yang tersedia di AWS Serverless Application Repository (SAR).

**Untuk menemukan nomor versi Athena Query Federation terbaru**

1. Kunjungi GitHub URL [https://github.com/awslabs/aws-athena-query-federation/releases/latest](https://github.com/awslabs/aws-athena-query-federation/releases/latest).

1. Perhatikan nomor rilis di judul halaman utama dalam format berikut:

   **Rilis v***year*. *week\$1of\$1year*. *iteration\$1of\$1week***Federasi Kueri Athena**

   Misalnya, nomor rilis untuk **Rilis v2023.8.3 dari Athena Query Federation adalah 2023.8.3**.

## Temukan dan catat nama sumber daya
<a name="connectors-updating-finding-and-noting-resource-names"></a>

Dalam persiapan untuk peningkatan, Anda harus menemukan dan mencatat informasi berikut:

1. Nama fungsi Lambda untuk konektor.

1. Variabel lingkungan fungsi Lambda.

1. Nama aplikasi Lambda, yang mengelola fungsi Lambda untuk konektor.

**Untuk menemukan nama sumber daya dari konsol Athena**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Di kolom **Nama sumber data**, pilih tautan ke sumber data untuk konektor Anda.

1. Di bagian **Detail sumber data**, di bawah fungsi **Lambda, pilih tautan ke fungsi** Lambda Anda.  
![\[Pilih tautan ke fungsi Lambda Anda.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-updating-1.png)

1. Pada halaman **Fungsi**, di kolom **Nama fungsi**, perhatikan nama fungsi untuk konektor Anda.  
![\[Perhatikan nama fungsi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-updating-2.png)

1. Pilih tautan nama fungsi.

1. Di bawah bagian **Ikhtisar fungsi**, pilih tab **Konfigurasi**.

1. Di panel di sebelah kiri, pilih **variabel Lingkungan**.

1. Di bagian **variabel Lingkungan**, catat kunci dan nilai yang sesuai.

1. Gulir ke bagian atas halaman.

1. Dalam pesan **Fungsi ini milik aplikasi. Klik di sini untuk mengelolanya**, pilih tautan **Klik di sini**.

1. **Pada *your\$1application\$1name* halaman **serverlessrepo-**, catat nama aplikasi Anda tanpa serverlessrepo.** Misalnya, jika nama aplikasi adalah **serverlessrepo- DynamoDbTestApp**, maka nama aplikasi Anda adalah. **DynamoDbTestApp**

1. Tetap di halaman konsol Lambda untuk aplikasi Anda, dan kemudian lanjutkan dengan langkah-langkah dalam **Menemukan versi konektor yang Anda gunakan**.

## Temukan versi konektor yang Anda gunakan
<a name="connectors-updating-finding-the-version-that-you-are-using"></a>

Ikuti langkah-langkah ini untuk menemukan versi konektor yang Anda gunakan.

**Untuk menemukan versi konektor yang Anda gunakan**

1. **Pada halaman konsol Lambda untuk aplikasi Lambda Anda, pilih tab Deployments.**

1. Pada tab **Deployments**, perluas template **SAM**.

1. Cari **CodeUri**.

1. Di bidang **Key** di bawah **CodeUri**, temukan string berikut:

   ```
   applications-connector_name-versions-year.week_of_year.iteration_of_week/hash_number
   ```

   Contoh berikut menunjukkan string untuk CloudWatch konektor:

   ```
   applications-AthenaCloudwatchConnector-versions-2021.42.1/15151159...
   ```

1. Catat nilai untuk*year*. *week\$1of\$1year*. *iteration\$1of\$1week*(misalnya, **2021.42.1**). Ini adalah versi untuk konektor Anda.

## Terapkan versi baru konektor Anda
<a name="connectors-updating-deploying-the-new-version"></a>

Ikuti langkah-langkah ini untuk menerapkan versi baru konektor Anda.

**Untuk menerapkan versi baru konektor Anda**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih **Buat sumber data**.

1. Pilih sumber data yang ingin Anda tingkatkan, lalu pilih **Berikutnya**.

1. Di bagian **Detail koneksi**, pilih **Buat fungsi Lambda**. Ini membuka konsol Lambda tempat Anda dapat menyebarkan aplikasi yang diperbarui.  
![\[Halaman konektor di AWS Lambda konsol.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-updating-3.png)

1. Karena Anda tidak benar-benar membuat sumber data baru, Anda dapat menutup tab konsol Athena.

1. Pada halaman konsol Lambda untuk konektor, lakukan langkah-langkah berikut:

   1. **Pastikan bahwa Anda telah menghapus awalan **serverlessrepo-** dari nama aplikasi Anda, dan kemudian salin nama aplikasi ke bidang Nama aplikasi.**

   1. Salin nama fungsi Lambda Anda ke bidang. **AthenaCatalogName** Beberapa konektor menyebut bidang ini **LambdaFunctionName**.

   1. Salin variabel lingkungan yang Anda rekam ke bidang yang sesuai.

1. **Pilih opsi yang **saya akui bahwa aplikasi ini membuat peran IAM khusus dan kebijakan sumber daya**, lalu pilih Terapkan.**

1. Untuk memverifikasi bahwa aplikasi Anda telah diperbarui, pilih tab **Deployment.**

   Bagian **Riwayat Deployment** menunjukkan bahwa pembaruan Anda telah selesai.  
![\[Pembaruan konektor selesai.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-updating-4.png)

1. Untuk mengonfirmasi nomor versi baru, Anda dapat memperluas **template SAM** seperti sebelumnya **CodeUri**, menemukan, dan memeriksa nomor versi konektor di bidang **Kunci**.

Anda sekarang dapat menggunakan konektor yang diperbarui untuk membuat kueri federasi Athena.

# Mengedit atau menghapus koneksi sumber data
<a name="connectors-edit-data-source"></a>

Anda dapat menggunakan konsol Athena untuk memperbarui deskripsi, host, port, database, dan properti lainnya untuk koneksi yang ada. Anda juga dapat menghapus sumber data dari konsol Athena.

## Mengedit koneksi sumber data
<a name="connectors-edit-data-source-editsteps"></a>

**Untuk mengedit koneksi sumber data**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih sambungan sumber data yang ingin Anda edit.

1. Untuk **detail AWS Glue koneksi**, pilih **Edit**.

1. Pilih **Berikutnya**.

1. Pada <connection-name>halaman **Edit**, perbarui informasi sesuai kebutuhan. Properti yang tersedia tergantung pada jenis koneksi.
**catatan**  
Saat Anda memperbarui properti koneksi untuk rahasia, lokasi tumpahan, atau ID AWS KMS kunci, pastikan peran eksekusi Lambda masih memiliki akses ke sumber daya yang diperbarui. Untuk informasi selengkapnya, lihat [Melihat dan memperbarui izin dalam peran eksekusi](https://docs.aws.amazon.com/lambda/latest/dg/permissions-executionrole-update.html) di Panduan AWS Lambda Pengembang.
   + **Deskripsi** - Edit deskripsi untuk koneksi Anda.
   + **Host** — Edit nama host untuk database Anda.
   + **Port** — Edit nomor port untuk database Anda.
   + **Database** — Edit nama database Anda.
   + Parameter **JDBC - Edit parameter** JDBC tambahan yang diperlukan untuk koneksi Anda. 
   + **Rahasia** — Pilih atau buat rahasia dari AWS Secrets Manager. Gunakan AWS rahasia untuk menghindari hardcoding informasi sensitif dalam string koneksi JDBC Anda. Untuk informasi lebih lanjut, lihat [Apa itu AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) Untuk informasi tentang membuat rahasia di Secrets Manager, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) di *Panduan AWS Secrets Manager Pengguna*.

     Untuk menggunakan AWS Secrets Manager kueri federasi Athena, Anda harus mengonfigurasi titik akhir pribadi Amazon VPC untuk Secrets Manager. *Untuk informasi selengkapnya, lihat [Membuat titik akhir pribadi VPC Secrets Manager di Panduan](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint-create) Pengguna.AWS Secrets Manager *
   + **Lokasi tumpahan di Amazon** S3 — Pilih atau buat lokasi bucket Amazon S3 di akun Anda untuk menyimpan data yang melebihi batas ukuran respons fungsi Lambda.
**catatan**  
Data yang tumpah tidak digunakan kembali dalam eksekusi berikutnya dan dapat dihapus dengan aman setelah 12 jam. Athena tidak menghapus data ini untuk Anda. Untuk mengelola objek ini, pertimbangkan untuk menambahkan kebijakan siklus hidup objek yang menghapus data lama dari bucket tumpahan Amazon S3 Anda. Untuk informasi selengkapnya, lihat [Mengelola siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) di Panduan Pengguna *Amazon S3*.
   + **Enkripsi untuk hasil kueri di S3** — Pilih salah satu dari berikut ini:
     + (Default) **Gunakan kunci yang dibuat secara acak** — Data yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dibuat secara acak.
     + **Gunakan AWS KMS kunci** — Pilih atau buat kunci enkripsi yang lebih kuat dan AWS KMS dihasilkan. Untuk informasi selengkapnya, lihat [Membuat kunci](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) di *Panduan AWS Key Management Service Pengembang*.
     + **Matikan** — Jangan mengenkripsi data tumpahan.
   + **Pengaturan jaringan** — Beberapa koneksi memerlukan virtual private cloud (VPC). Pilih atau buat VPC yang memiliki penyimpanan data yang ingin Anda akses, subnet, dan satu atau beberapa grup keamanan. Untuk informasi selengkapnya, lihat [Buat VPC untuk konektor atau koneksi sumber data AWS Glue](athena-connectors-vpc-creation.md).
**catatan**  
Setelah memperbarui properti koneksi untuk sumber daya seperti rahasia, lokasi tumpahan, atau ID AWS KMS kunci, pastikan peran eksekusi Lambda terus memiliki akses ke sumber daya yang diperbarui.
Setelah Anda memperbarui pengaturan jaringan untuk koneksi Anda, pastikan Anda memperbarui fungsi Lambda dengan pengaturan yang sama untuk membuat koneksi Anda kompatibel dengan sumber data.

   Untuk informasi tentang properti sambungan tambahan, lihat [properti AWS Glue koneksi](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) di *Panduan AWS Glue Pengguna* atau [Konektor sumber data yang tersedia](connectors-available.md) di Panduan *Pengguna Amazon Athena*.

1. Pilih **Simpan**.

Bagian **detail AWS Glue koneksi** pada halaman untuk sumber data Anda menunjukkan informasi terbaru untuk konektor Anda.

## Hapus sumber data
<a name="connectors-edit-data-source-delete"></a>

Ketika Anda menghapus sumber data, itu hanya menghapus sumber data Athena dan tidak menghapus sumber daya seperti koneksi Glue, peran eksekusi IAM, dan fungsi Lambda.

**Untuk menghapus sumber data**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih sumber data yang ingin Anda hapus.

1. Pilih **Hapus**.

1. **Pada halaman **Hapus sumber data**, ketik *konfirmasi* untuk mengonfirmasi penghapusan dan pilih Hapus.** Mungkin perlu beberapa waktu sebelum penghapusan sumber data selesai. Anda mendapatkan peringatan sukses setelah sumber data dihapus.

# Jalankan kueri federasi
<a name="running-federated-queries"></a>

Setelah Anda mengonfigurasi satu atau lebih konektor data dan menyebarkannya ke akun Anda, Anda dapat menggunakannya dalam kueri Athena Anda. 

## Kueri satu sumber data
<a name="running-federated-queries-single-data-source"></a>

Contoh di bagian ini mengasumsikan bahwa Anda telah mengonfigurasi dan menerapkan [Konektor Amazon Athena CloudWatch](connectors-cloudwatch.md) ke akun Anda. Gunakan pendekatan yang sama untuk mengkueri saat Anda menggunakan konektor lain.

**Untuk membuat kueri Athena yang menggunakan konektor CloudWatch**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Di editor kueri Athena, buat kueri SQL yang menggunakan sintaks berikut dalam klausa. `FROM`

   ```
   MyCloudwatchCatalog.database_name.table_name       
   ```

### Contoh
<a name="running-federated-queries-single-data-source-examples"></a>

Contoh berikut menggunakan CloudWatch konektor Athena untuk terhubung ke `all_log_streams` tampilan di grup [Log `/var/ecommerce-engine/order-processor` CloudWatch Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html). Parameter`all_log_streams`tampilan adalah tampilan dari semua aliran log dalam grup log. Contoh kueri membatasi jumlah baris kembali ke 100.

```
SELECT * 
FROM "MyCloudwatchCatalog"."/var/ecommerce-engine/order-processor".all_log_streams 
LIMIT 100;
```

Contoh berikut mem-parsing informasi dari tampilan yang sama seperti contoh sebelumnya. Contoh ekstrak urutan ID dan level log dan menyaring pesan yang memiliki level`INFO`.

```
SELECT 
    log_stream as ec2_instance, 
    Regexp_extract(message '.*orderId=(\d+) .*', 1) AS orderId, 
    message AS order_processor_log, 
    Regexp_extract(message, '(.*):.*', 1) AS log_level 
FROM MyCloudwatchCatalog."/var/ecommerce-engine/order-processor".all_log_streams 
WHERE Regexp_extract(message, '(.*):.*', 1) != 'INFO'
```

## Kueri beberapa sumber data
<a name="running-federated-queries-multiple-sources"></a>

Sebagai contoh yang lebih kompleks, bayangkan sebuah perusahaan e-commerce yang menggunakan sumber data berikut untuk menyimpan data yang terkait dengan pembelian pelanggan:
+ [Amazon RDS for](https://aws.amazon.com/rds/mysql/) MySQL untuk menyimpan data katalog produk
+ [Amazon DocumentDB](https://aws.amazon.com/documentdb/) untuk menyimpan data akun pelanggan seperti email dan alamat pengiriman
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) untuk menyimpan pengiriman pesanan dan data pelacakan

Bayangkan seorang analis data untuk aplikasi e-commerce ini mengetahui bahwa waktu pengiriman di beberapa daerah telah dipengaruhi oleh kondisi cuaca setempat. Analis ingin mengetahui berapa banyak pesanan yang tertunda, di mana pelanggan yang terkena dampak berada, dan produk mana yang paling terpengaruh. Alih-alih menyelidiki sumber informasi secara terpisah, analis menggunakan Athena untuk menggabungkan data bersama dalam satu kueri federasi.

**Example**  

```
SELECT 
     t2.product_name AS product, 
     t2.product_category AS category, 
     t3.customer_region AS region, 
     count(t1.order_id) AS impacted_orders 
FROM my_dynamodb.default.orders t1 
JOIN my_mysql.products.catalog t2 ON t1.product_id = t2.product_id 
JOIN my_documentdb.default.customers t3 ON t1.customer_id = t3.customer_id 
WHERE 
     t1.order_status = 'PENDING'
     AND t1.order_date between '2022-01-01' AND '2022-01-05' 
GROUP BY 1, 2, 3 
ORDER BY 4 DESC
```

## Kueri tampilan federasi
<a name="running-federated-queries-federated-views"></a>

Saat menanyakan sumber federasi, Anda dapat menggunakan tampilan untuk mengaburkan sumber data yang mendasarinya atau menyembunyikan gabungan kompleks dari analis lain yang menanyakan data.

### Pertimbangan dan batasan
<a name="running-federated-queries-federated-views-considerations"></a>
+ Tampilan federasi membutuhkan mesin Athena versi 3. 
+ Tampilan federasi disimpan di AWS Glue, bukan dengan sumber data yang mendasarinya.
+ Tampilan federasi tidak didukung pada sumber data yang [terdaftar sebagai Katalog Data Glue](register-connection-as-gdc.md).
+ Tampilan yang dibuat dengan katalog federasi harus menggunakan sintaks nama yang sepenuhnya memenuhi syarat, seperti pada contoh berikut:

  ```
  "ddbcatalog"."default"."customers"
  ```
+ Pengguna yang menjalankan kueri pada sumber federasi harus memiliki izin untuk menanyakan sumber federasi.
+ `athena:GetDataCatalog`Izin diperlukan untuk pandangan federasi. Untuk informasi selengkapnya, lihat [Izinkan akses ke Kueri Federasi Athena: Contoh kebijakan](federated-query-iam-access.md).

### Contoh
<a name="running-federated-queries-federated-views-examples"></a>

Contoh berikut membuat tampilan yang disebut `customers` pada data yang disimpan dalam sumber data federasi.

**Example**  

```
CREATE VIEW customers AS
SELECT *
FROM my_federated_source.default.table
```

Contoh kueri berikut menunjukkan kueri yang mereferensikan `customers` tampilan, bukan sumber data federasi yang mendasarinya.

**Example**  

```
SELECT id, SUM(order_amount)
FROM customers
GROUP by 1
ORDER by 2 DESC
LIMIT 50
```

Contoh berikut membuat tampilan yang disebut `order_summary` yang menggabungkan data dari sumber data federasi dan dari sumber data Amazon S3. Dari sumber federasi, yang telah dibuat di Athena, tampilan menggunakan tabel `person` dan`profile`. Dari Amazon S3, tampilan menggunakan tabel `purchase` dan`payment`. Untuk merujuk ke Amazon S3, pernyataan tersebut menggunakan kata kunci. `awsdatacatalog` Perhatikan bahwa sumber data federasi menggunakan sintaks *federated\$1source\$1name* nama yang sepenuhnya memenuhi syarat. *federated\$1source\$1database*. *federated\$1source\$1table*.

**Example**  

```
CREATE VIEW default.order_summary AS
SELECT *
FROM federated_source_name.federated_source_database."person" p
    JOIN federated_source_name.federated_source_database."profile" pr ON pr.id = p.id
    JOIN awsdatacatalog.default.purchase i ON p.id = i.id
    JOIN awsdatacatalog.default.payment pay ON pay.id = p.id
```

### Sumber daya tambahan
<a name="running-federated-queries-federated-views-additional-resources"></a>
+ *Untuk contoh tampilan federasi yang dipisahkan dari sumber asalnya dan tersedia untuk analisis sesuai permintaan dalam model multi-pengguna, lihat Memperluas [mesh data Anda dengan Amazon Athena dan tampilan gabungan di Blog Big](https://aws.amazon.com/blogs/big-data/extend-your-data-mesh-with-amazon-athena-and-federated-views/) Data.AWS * 
+ Untuk informasi lebih lanjut tentang bekerja dengan pemandangan di Athena, lihat. [Bekerja dengan pandangan](views.md)

# Gunakan kueri passthrough federasi
<a name="federated-query-passthrough"></a>

Di Athena, Anda dapat menjalankan kueri pada sumber data federasi menggunakan bahasa kueri dari sumber data itu sendiri dan mendorong kueri lengkap ke sumber data untuk dieksekusi. Kueri ini disebut kueri passthrough. Untuk menjalankan kueri passthrough, Anda menggunakan fungsi tabel dalam kueri Athena Anda. Anda menyertakan kueri passthrough untuk dijalankan pada sumber data di salah satu argumen ke fungsi tabel. Melewati kueri mengembalikan tabel yang dapat Anda analisis menggunakan Athena SQL.

## Konektor yang Didukung
<a name="federated-query-passthrough-supported-connectors"></a>

Konektor sumber data Athena berikut mendukung kueri passthrough.
+ [Penyimpanan Danau Data Azure](connectors-adls-gen2.md)
+ [Sinaps Azure](connectors-azure-synapse.md)
+ [Sarang Cloudera](connectors-cloudera-hive.md)
+ [Cloudera Impala](connectors-cloudera-impala.md)
+ [CloudWatch](connectors-cloudwatch.md)
+ [Db2](connectors-ibm-db2.md)
+ [Db2 iSeries](connectors-ibm-db2-as400.md)
+ [DocumentDB](connectors-docdb.md) 
+ [DynamoDB](connectors-dynamodb.md) 
+ [HBase](connectors-hbase.md)
+ [Google BigQuery](connectors-bigquery.md)
+ [Hortonworks](connectors-hortonworks.md)
+ [MySQL](connectors-mysql.md)
+ [Neptune](connectors-neptune.md)
+ [OpenSearch](connectors-opensearch.md) 
+ [Oracle](connectors-oracle.md)
+ [PostgreSQL](connectors-postgresql.md)
+ [Redshift](connectors-redshift.md)
+ [SAP HANA](connectors-sap-hana.md)
+ [Kepingan salju](connectors-snowflake.md)
+ [SQL Server](connectors-microsoft-sql-server.md)
+ [Teradata](connectors-teradata.md)
+ [Timestream](connectors-timestream.md)
+ [Vertica](connectors-vertica.md)

## Pertimbangan dan batasan
<a name="federated-query-passthrough-considerations-and-limitations"></a>

Saat menggunakan kueri passthrough di Athena, pertimbangkan hal-hal berikut:
+ Passthrough kueri hanya didukung untuk pernyataan `SELECT` Athena atau operasi baca.
+ Kinerja kueri dapat bervariasi tergantung pada konfigurasi sumber data.
+ Passthrough kueri tidak mendukung kontrol akses berbutir halus Lake Formation.
+ Kueri passthrough tidak didukung pada sumber data yang [terdaftar sebagai Katalog Data Glue](register-connection-as-gdc.md).

## Sintaksis
<a name="federated-query-passthrough-syntax"></a>

Sintaks passthrough query Athena umum adalah sebagai berikut.

```
SELECT * FROM TABLE(catalog.system.function_name(arg1 => 'arg1Value'[, arg2 => 'arg2Value', ...]))
```

Perhatikan hal-hal berikut:
+ **katalog** — Nama konektor federasi Athena target atau nama katalog data.
+ **system** — Namespace yang berisi fungsi. Semua implementasi konektor Athena menggunakan namespace ini.
+ **function\$1name** — Nama fungsi yang mendorong kueri passthrough ke sumber data. Ini sering disebut`query`. Kombinasi `catalog.system.function_name` adalah jalur resolusi penuh untuk fungsi tersebut.
+ **arg1, arg2, dan sebagainya** — Argumen fungsi. Pengguna harus meneruskan ini ke fungsi. Dalam kebanyakan kasus, ini adalah string kueri yang diturunkan ke sumber data.

Untuk sebagian besar sumber data, argumen pertama dan satu-satunya `query` diikuti oleh operator panah `=>` dan string kueri.

```
SELECT * FROM TABLE(catalog.system.query(query => 'query string'))
```

Untuk mempermudah, Anda dapat menghilangkan argumen bernama opsional `query` dan operator `=>` panah.

```
SELECT * FROM TABLE(catalog.system.query('query string'))
```

Anda selanjutnya dapat menyederhanakan kueri dengan menghapus `catalog` nama jika kueri dijalankan dalam konteks katalog target.

```
SELECT * FROM TABLE(system.query('query string'))
```

Jika sumber data membutuhkan lebih dari string kueri, gunakan argumen bernama dalam urutan yang diharapkan oleh sumber data. Misalnya, ekspresi `arg1 => 'arg1Value'` berisi argumen pertama dan nilainya. Nama *arg1* ini khusus untuk sumber data dan dapat berbeda dari konektor ke konektor.

```
SELECT * FROM TABLE(
        system.query(
            arg1 => 'arg1Value',
            arg2 => 'arg2Value',
            arg3 => 'arg3Value'
        ));
```

Hal di atas juga dapat disederhanakan dengan menghilangkan nama argumen. Namun, Anda harus mengikuti urutan tanda tangan metode. Lihat dokumentasi masing-masing konektor untuk informasi selengkapnya tentang tanda tangan fungsi.

```
SELECT * FROM TABLE(catalog.system.query('arg1Value', 'arg2Value', 'arg3Value'))
```

Anda dapat menjalankan beberapa kueri passthrough di berbagai konektor Athena dengan memanfaatkan jalur resolusi fungsi penuh, seperti pada contoh berikut.

```
SELECT c_customer_sk 
    FROM TABLE (postgresql.system.query('select * from customer limit 10'))
UNION
SELECT c_customer_sk 
    FROM TABLE(dynamodb.system.query('select * from customer')) LIMIT 10
```

Anda dapat menggunakan kueri passthrough sebagai bagian dari tampilan federasi. Keterbatasan yang sama berlaku. Untuk informasi selengkapnya, lihat [Menanyakan tampilan gabungan](https://docs.aws.amazon.com/athena/latest/ug/running-federated-queries.html#running-federated-queries-federated-views).

```
CREATE VIEW catalog.database.ViewName AS
    SELECT * FROM TABLE (
        catalog.system.query('query')
    )
```

Untuk informasi tentang sintaks yang tepat untuk digunakan dengan konektor tertentu, lihat dokumentasi konektor individual.

### Penggunaan tanda kutip
<a name="federated-query-passthrough-syntax-quotation-marks"></a>

Nilai argumen, termasuk string kueri yang Anda lewati, harus diapit dalam tanda kutip tunggal, seperti pada contoh berikut.

```
SELECT * FROM TABLE(system.query(query => 'SELECT * FROM testdb.persons LIMIT 10'))
```

Ketika string kueri dikelilingi oleh tanda kutip ganda, kueri gagal. Kueri berikut gagal dengan pesan kesalahan COLUMN\$1NOT\$1FOUND: baris 1:43: Kolom 'pilih \$1 dari batas testdb.persons 10' tidak dapat diselesaikan.

```
SELECT * FROM TABLE(system.query(query => "SELECT * FROM testdb.persons LIMIT 10"))
```

Untuk menghindari satu kutipan, tambahkan satu kutipan ke aslinya (misalnya, `terry's_group` ke`terry''s_group`).

## Contoh
<a name="federated-query-passthrough-sql-based-connectors-examples"></a>

Contoh query berikut mendorong ke bawah query ke sumber data. Kueri memilih semua kolom dalam `customer` tabel, membatasi hasilnya menjadi 10.

```
SELECT * FROM TABLE(
        catalog.system.query(
            query => 'SELECT * FROM customer LIMIT 10;'
        ))
```

Pernyataan berikut menjalankan query yang sama, tetapi menghilangkan argumen bernama opsional `query` dan operator panah`=>`.

```
SELECT * FROM TABLE(
        catalog.system.query(
            'SELECT * FROM customer LIMIT 10;'
        ))
```

Ini juga dapat dienkapsulasi dalam tampilan federasi untuk kemudahan penggunaan kembali. Saat digunakan dengan tampilan, Anda harus menggunakan jalur resolusi fungsi penuh.

```
CREATE VIEW AwsDataCatalog.default.example_view AS
    SELECT * FROM TABLE (
        catalog.system.query('SELECT * FROM customer LIMIT 10;')
    )
```

## Menyisih dari passthrough kueri
<a name="federated-query-passthrough-sql-based-connectors-opting-out"></a>

Untuk menonaktifkan kueri passthrough, tambahkan variabel lingkungan Lambda bernama `enable_query_passthrough` dan atur ke. `false`

# Memahami kualifikasi nama tabel federasi
<a name="tables-qualifiers"></a>

Athena menggunakan istilah-istilah berikut untuk merujuk ke hierarki objek data:
+ **Sumber data** — sekelompok database
+ **Database** — sekelompok tabel
+ **Tabel** — data yang disusun sebagai sekelompok baris atau kolom

Terkadang benda-benda ini juga disebut dengan nama alternatif tetapi setara seperti berikut ini:
+ Sumber data terkadang disebut sebagai katalog.
+ Database kadang-kadang disebut sebagai skema.

## Ketentuan dalam sumber data federasi
<a name="tables-qualifiers-terms-in-federated-data-sources"></a>

Saat Anda menanyakan sumber data federasi, perhatikan bahwa sumber data yang mendasarinya mungkin tidak menggunakan terminologi yang sama dengan Athena. Ingatlah perbedaan ini saat Anda menulis kueri federasi Anda. Bagian berikut menjelaskan bagaimana istilah objek data di Athena sesuai dengan yang ada di sumber data federasi.

### Amazon Redshift
<a name="tables-qualifiers-redshift"></a>

*Basis data* *Amazon Redshift adalah sekelompok *skema* Redshift yang berisi sekelompok tabel Redshift.*


****  

| Athena | Redshift | 
| --- | --- | 
| Sumber data Redshift | Fungsi Lambda konektor Redshift dikonfigurasi untuk menunjuk ke Redshift. database | 
| data\$1source.database.table | database.schema.table | 

Kueri contoh

```
SELECT * FROM 
Athena_Redshift_connector_data_source.Redshift_schema_name.Redshift_table_name
```

Untuk informasi lebih lanjut tentang konektor ini, lihat[Konektor Pergeseran Merah Amazon Athena](connectors-redshift.md).

### Sarang Cloudera
<a name="tables-qualifiers-cloudera-hive"></a>

*Server* *Cloudera Hive atau *cluster adalah sekelompok* *database* Cloudera Hive yang berisi sekelompok tabel Cloudera Hive.*


****  

| Athena | Hive | 
| --- | --- | 
| Sumber data Cloudera Hive | Konektor Cloudera Hive Fungsi Lambda dikonfigurasi untuk menunjuk ke Cloudera Hive. server | 
| data\$1source.database.table | server.database.table | 

Kueri contoh

```
SELECT * FROM 
Athena_Cloudera_Hive_connector_data_source.Cloudera_Hive_database_name.Cloudera_Hive_table_name
```

Untuk informasi lebih lanjut tentang konektor ini, lihat[Konektor Amazon Athena Cloudera Hive](connectors-cloudera-hive.md).

### Cloudera Impala
<a name="tables-qualifiers-cloudera-impala"></a>

*Sebuah Impala *server* atau *cluster* adalah sekelompok *database* Impala yang berisi sekelompok tabel Impala.*


****  

| Athena | Impala | 
| --- | --- | 
| Sumber data Impala | Konektor Impala Fungsi Lambda dikonfigurasi untuk menunjuk ke Impala. server | 
| data\$1source.database.table | server.database.table | 

Kueri contoh

```
SELECT * FROM 
Athena_Impala_connector_data_source.Impala_database_name.Impala_table_name
```

Untuk informasi lebih lanjut tentang konektor ini, lihat[Konektor Amazon Athena Cloudera Impala](connectors-cloudera-impala.md).

### MySQL
<a name="tables-qualifiers-mysql"></a>

*Server *MySQL* adalah sekelompok database MySQL yang berisi sekelompok tabel *MySQL*.*


****  

| Athena | MySQL | 
| --- | --- | 
| Sumber data MySQL | Konektor MySQL Fungsi Lambda dikonfigurasi untuk menunjuk ke MySQL. server | 
| data\$1source.database.table | server.database.table | 

Kueri contoh

```
SELECT * FROM 
Athena_MySQL_connector_data source.MySQL_database_name.MySQL_table_name
```

Untuk informasi lebih lanjut tentang konektor ini, lihat[Konektor MySQL Amazon Athena](connectors-mysql.md).

### Oracle
<a name="tables-qualifiers-oracle"></a>

*Server* *Oracle (atau *database*) adalah sekelompok *skema* Oracle yang berisi sekelompok tabel Oracle.*


****  

| Athena | Oracle | 
| --- | --- | 
| Sumber data Oracle | Konektor Oracle Fungsi Lambda dikonfigurasi untuk menunjuk ke Oracle. server | 
| data\$1source.database.table | server.schema.table | 

Kueri contoh

```
SELECT * FROM 
Athena_Oracle_connector_data_source.Oracle_schema_name.Oracle_table_name
```

Untuk informasi lebih lanjut tentang konektor ini, lihat[Konektor Amazon Athena Oracle](connectors-oracle.md).

### Postgres
<a name="tables-qualifiers-postgres"></a>

*Server* *Postgres (atau *cluster*) adalah sekelompok database Postgres.* *Database* *Postgres adalah sekelompok *skema* Postgres yang berisi sekelompok tabel Postgres.*


****  

| Athena | Postgres | 
| --- | --- | 
| Sumber data postgres | Konektor Postgres Fungsi Lambda dikonfigurasi untuk menunjuk ke Postgres dan. server database | 
| data\$1source.database.table | server.database.schema.table | 

Kueri contoh

```
SELECT * FROM 
Athena_Postgres_connector_data_source.Postgres_schema_name.Postgres_table_name
```

Untuk informasi lebih lanjut tentang konektor ini, lihat[Konektor Amazon Athena PostgreSQL](connectors-postgresql.md).

# Kembangkan konektor sumber data menggunakan Athena Query Federation SDK
<a name="connect-data-source-federation-sdk"></a>

Untuk menulis konektor sumber data Anda sendiri, Anda dapat menggunakan [Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk) SDK. SDK Federasi Kueri Athena menetapkan satu set antarmuka dan wire protocol yang dapat Anda gunakan untuk meminta Athena mendelegasikan sebagian rencana eksekusi kuerinya ke kode yang Anda tulis dan deploy. SDK tersebut mencakup rangkaian konektor dan konektor contoh.

Konektor khusus tidak menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue. Konfigurasi koneksi dilakukan melalui Lambda.

Anda juga dapat menyesuaikan [konektor bawaan](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors) Amazon Athena untuk penggunaan Anda sendiri. Anda dapat memodifikasi salinan kode sumber dari GitHub dan kemudian menggunakan [alat publikasi Konektor](https://github.com/awslabs/aws-athena-query-federation/wiki/Connector_Publish_Tool) untuk membuat AWS Serverless Application Repository paket Anda sendiri. Setelah Anda men-deploy konektor Anda dengan cara ini, Anda dapat menggunakannya dalam kueri Athena Anda.

Untuk informasi tentang cara mengunduh SDK dan petunjuk terperinci untuk menulis konektor Anda sendiri, lihat [Contoh konektor Athena aktif](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-example). GitHub

# Bekerja dengan konektor sumber data untuk Apache Spark
<a name="connectors-spark"></a>

Beberapa konektor sumber data Athena tersedia sebagai konektor Spark DSV2 . Nama DSV2 konektor Spark memiliki `-dsv2` akhiran (misalnya,`athena-dynamodb-dsv2`).

Berikut ini adalah DSV2 konektor yang tersedia saat ini, nama `.format()` kelas Spark mereka, dan tautan ke dokumentasi Kueri Federasi Amazon Athena yang sesuai:


| DSV2 konektor | Spark .format () nama kelas | Dokumentasi | 
| --- | --- | --- | 
| athena-cloudwatch-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.CloudwatchTableProvider | [CloudWatch](connectors-cloudwatch.md) | 
| athena-cloudwatch-metrics-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.metrics.CloudwatchMetricsTableProvider | [CloudWatch metrik](connectors-cwmetrics.md) | 
| athena-aws-cmdb-dsv2 | com.amazonaws.athena.connectors.dsv2.aws.cmdb.AwsCmdbTableProvider | [CMDB](connectors-cmdb.md) | 
| athena-dynamodb-dsv2 | com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider | [DynamoDB](connectors-dynamodb.md) | 

Untuk mengunduh `.jar` file untuk DSV2 konektor, kunjungi DSV2 GitHub halaman [Federasi Kueri Amazon Athena](https://github.com/awslabs/aws-athena-query-federation-dsv2) dan lihat bagian **Rilis, **Rilis *<version>*****, **Aset**.

## Tentukan toples ke Spark
<a name="connectors-spark-specifying-the-jar-to-spark"></a>

Untuk menggunakan DSV2 konektor Athena dengan Spark, Anda mengirimkan `.jar` file untuk konektor ke lingkungan Spark yang Anda gunakan. Bagian berikut menjelaskan kasus-kasus tertentu.

### Athena untuk Spark
<a name="connectors-spark-ate"></a>

Untuk informasi tentang menambahkan `.jar` file kustom dan konfigurasi kustom ke Amazon Athena untuk Apache Spark, lihat. [Gunakan properti Spark untuk menentukan konfigurasi kustom](notebooks-spark-custom-jar-cfg.md)

### General Spark
<a name="connectors-spark-general"></a>

Untuk meneruskan `.jar` file konektor ke Spark, gunakan `spark-submit` perintah dan tentukan `.jar` file dalam `--jars` opsi, seperti pada contoh berikut:

```
spark-submit \ 
  --deploy-mode cluster \ 
  --jars https://github.com/awslabs/aws-athena-query-federation-dsv2/releases/download/some_version/athena-dynamodb-dsv2-some_version.jar
```

### Amazon EMR Spark
<a name="connectors-spark-emr"></a>

Untuk menjalankan `spark-submit` perintah dengan `--jars` parameter di Amazon EMR, Anda harus menambahkan langkah ke cluster Amazon EMR Spark Anda. Untuk detail tentang cara menggunakan `spark-submit` di Amazon EMR, lihat [Menambahkan langkah Spark](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html) di Panduan Rilis Amazon *EMR*.

### AWS Glue Percikan ETL
<a name="connectors-spark-glue-etl"></a>

Untuk AWS Glue ETL, Anda dapat meneruskan URL GitHub .com `.jar` file ke `--extra-jars` argumen `aws glue start-job-run` perintah. AWS Glue Dokumentasi menjelaskan `--extra-jars` parameter sebagai mengambil jalur Amazon S3, tetapi parameter juga dapat mengambil URL HTTPS. Untuk informasi selengkapnya, lihat [Referensi parameter Job](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html#w5aac32c13c11) di *Panduan AWS Glue Pengembang*.

## Kueri konektor di Spark
<a name="connectors-spark-querying-the-connector"></a>

Untuk mengirimkan yang setara dengan kueri federasi Athena yang ada di Apache Spark, gunakan fungsinya. `spark.sql()` Misalnya, Anda memiliki kueri Athena berikut yang ingin Anda gunakan pada Apache Spark.

```
SELECT somecola, somecolb, somecolc 
FROM ddb_datasource.some_schema_or_glue_database.some_ddb_or_glue_table 
WHERE somecola > 1
```

Untuk melakukan kueri yang sama di Spark menggunakan konektor Amazon Athena DSV2 DynamoDB, gunakan kode berikut:

```
dynamoDf = (spark.read 
    .option("athena.connectors.schema", "some_schema_or_glue_database") 
    .option("athena.connectors.table", "some_ddb_or_glue_table") 
    .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") 
    .load()) 
 
dynamoDf.createOrReplaceTempView("ddb_spark_table") 
 
spark.sql(''' 
SELECT somecola, somecolb, somecolc 
FROM ddb_spark_table 
WHERE somecola > 1 
''')
```

## Tentukan parameter
<a name="connectors-spark-parameters"></a>

 DSV2 Versi konektor sumber data Athena menggunakan parameter yang sama dengan konektor sumber data Athena yang sesuai. Untuk informasi parameter, lihat dokumentasi untuk konektor sumber data Athena yang sesuai.

Dalam PySpark kode Anda, gunakan sintaks berikut untuk mengonfigurasi parameter Anda.

```
spark.read.option("athena.connectors.conf.parameter", "value")
```

Misalnya, kode berikut menetapkan parameter konektor DynamoDB Amazon Athena ke. `disable_projection_and_casing` `always`

```
dynamoDf = (spark.read 
    .option("athena.connectors.schema", "some_schema_or_glue_database") 
    .option("athena.connectors.table", "some_ddb_or_glue_table") 
    .option("athena.connectors.conf.disable_projection_and_casing", "always") 
    .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") 
    .load())
```

# Gunakan Amazon DataZone di Athena
<a name="datazone-using"></a>

Anda dapat menggunakan [Amazon DataZone](https://aws.amazon.com/datazone) untuk berbagi, mencari, dan menemukan data dalam skala besar melintasi batas organisasi. DataZone menyederhanakan pengalaman Anda di seluruh layanan AWS analitik seperti Athena AWS Glue,, dan. AWS Lake Formation Misalnya, jika Anda memiliki petabyte data di sumber data yang berbeda, Anda dapat menggunakan Amazon DataZone untuk membangun pengelompokan orang, data, dan alat berbasis kasus penggunaan bisnis. Untuk informasi lebih lanjut, lihat [Apa itu Amazon DataZone?](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html) .

Di Athena, Anda dapat menggunakan editor kueri untuk mengakses dan menanyakan DataZone lingkungan. DataZone Lingkungan menentukan kombinasi DataZone proyek dan domain. Bila Anda menggunakan DataZone lingkungan dari konsol Athena, Anda mengambil peran IAM dari DataZone lingkungan, dan Anda hanya melihat database dan tabel milik lingkungan tersebut. Izin ditentukan oleh peran yang Anda tentukan. DataZone

Di Athena, Anda dapat menggunakan pemilih **DataZone lingkungan** pada halaman editor kueri untuk memilih lingkungan. DataZone 

**Untuk membuka DataZone lingkungan di Athena**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. **Di kanan atas konsol Athena, di sebelah **Workgroup**, pilih lingkungan. DataZone **
**catatan**  
Opsi **DataZone lingkungan** hadir hanya ketika Anda memiliki satu atau lebih domain yang tersedia di DataZone.   
![\[Pilih DataZone lingkungan.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/datazone-using-1.png)

1. Gunakan pemilih **DataZone lingkungan** untuk memilih DataZone lingkungan.  
![\[Pilih DataZone lingkungan\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/datazone-using-2.png)

1. Di kotak dialog **Beralih ke DataZone lingkungan**, verifikasi bahwa lingkungan adalah yang Anda inginkan, lalu pilih **Beralih ke DataZone lingkungan**.  
![\[Verifikasi perubahan ke DataZone lingkungan.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/datazone-using-3.png)

Untuk informasi selengkapnya tentang memulai DataZone dan Athena, lihat tutorial [Memulai](https://docs.aws.amazon.com/datazone/latest/userguide/getting-started.html) di * DataZone Panduan Pengguna Amazon*.

# Gunakan metastore Hive eksternal
<a name="connect-to-data-source-hive"></a>

Anda dapat menggunakan konektor data Amazon Athena untuk metastore Hive eksternal untuk kueri set data di Amazon S3 yang menggunakan metastore Apache Hive. Tidak diperlukan migrasi metadata ke metadata. AWS Glue Data Catalog Di konsol manajemen Athena, Anda mengonfigurasi fungsi Lambda untuk berkomunikasi dengan metastore Hive yang ada di VPC pribadi Anda dan kemudian menghubungkannya ke metastore. Sambungan dari Lambda ke metastore Hive Anda dijamin dengan saluran Amazon VPC pribadi dan tidak menggunakan internet publik. Anda dapat memberikan kode fungsi Lambda Anda sendiri, atau Anda dapat menggunakan implementasi default dari konektor data Athena untuk metastore Hive eksternal.

**Topics**
+ [Ikhtisar fitur](#connect-to-a-data-source-hive-features)
+ [Alur kerja](#connect-to-data-source-hive-workflow)
+ [Pertimbangan dan batasan](#connect-to-a-data-source-hive-considerations)
+ [Hubungkan Athena ke metastore Apache Hive](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md)
+ [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data Hive](connect-data-source-sar-hive.md)
+ [Hubungkan Athena ke metastore Hive menggunakan peran eksekusi IAM yang ada](connect-data-source-hive-existing-iam-role.md)
+ [Konfigurasikan Athena untuk menggunakan konektor metastore Hive yang digunakan](connect-data-source-hive-existing-lambda.md)
+ [Hilangkan nama katalog dalam kueri metastore Hive eksternal](datastores-hive-default-catalog.md)
+ [Bekerja dengan tampilan Hive](hive-views.md)
+ [Gunakan AWS CLI metastores with Hive](datastores-hive-cli.md)
+ [Ubah konektor metastore Hive eksternal Athena](datastores-hive-reference-implementation.md)

## Ikhtisar fitur
<a name="connect-to-a-data-source-hive-features"></a>

Dengan konektor data Athena untuk metastore Hive eksternal, Anda dapat melakukan tugas-tugas berikut:
+ Gunakan konsol Athena untuk mendaftarkan katalog kustom dan menjalankan kueri menggunakan mereka.
+ Mendefinisikan fungsi Lambda untuk metastores Hive eksternal yang berbeda dan bergabung dengan mereka dalam permintaan Athena.
+ Gunakan metastor Hive AWS Glue Data Catalog dan eksternal Anda dalam kueri Athena yang sama.
+ Menentukan katalog dalam konteks eksekusi kueri sebagai katalog default saat ini. Ini akan menghapus persyaratan untuk nama katalog awalan untuk nama basis data dalam pertanyaan Anda. Alih-alih menggunakan sintaks`catalog.database.table`, Anda dapat menggunakan`database.table`.
+ Menggunakan berbagai alat untuk menjalankan kueri yang referensi metastores Hive eksternal. Anda dapat menggunakan konsol Athena, AWS SDK, Athena AWS CLI, dan driver Athena JDBC APIs dan ODBC yang diperbarui. Driver yang diperbarui memiliki dukungan untuk katalog kustom.

### Dukungan API
<a name="connect-to-a-data-source-hive-features-api"></a>

Athena Data Connector untuk Eksternal Hive Metastore termasuk dukungan untuk operasi API pendaftaran katalog dan operasi metadata API.
+ **Pendaftaran katalog**— Mendaftar katalog kustom untuk metastores Hive eksternal dan[Sumber data gabungan](federated-queries.md). 
+ **Metadata** — Gunakan metadata APIs untuk memberikan informasi database dan tabel untuk AWS Glue dan katalog apa pun yang Anda daftarkan di Athena.
+ **Athena JAVA SDK client** - Gunakan pendaftaran katalog APIs, metadata APIs, dan dukungan untuk katalog `StartQueryExecution` dalam operasi di klien Athena Java SDK yang diperbarui.

### Implementasi referensi
<a name="connect-to-a-data-source-hive-features-reference-implementation"></a>

Athena menyediakan implementasi referensi untuk fungsi Lambda yang menghubungkan ke metastores Hive eksternal. Implementasi referensi disediakan GitHub sebagai proyek open source di [Athena Hive](https://github.com/awslabs/aws-athena-hive-metastore) metastore.

Implementasi referensi tersedia sebagai dua AWS SAM aplikasi berikut dalam AWS Serverless Application Repository (SAR). Anda dapat menggunakan salah satu dari aplikasi ini di SAR untuk membuat fungsi Lambda Anda sendiri.
+ `AthenaHiveMetastoreFunction`— Fungsi Lambda`.jar`file. Sebuah “uber” JAR (juga dikenal sebagai JAR lemak atau JAR dengan dependensi) adalah`.jar`file yang berisi kedua program Java dan dependensi dalam satu file. 
+ `AthenaHiveMetastoreFunctionWithLayer`— Lapisan lambda dan fungsi Lambda tipis`.jar`file.

## Alur kerja
<a name="connect-to-data-source-hive-workflow"></a>

Diagram berikut menunjukkan bagaimana Athena berinteraksi dengan metastore Hive eksternal Anda.

![\[Bagaimana Athena berinteraksi dengan metastore Hive eksternal Anda.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connect-to-data-source-hive-workflow.png)


Dalam alur kerja ini, Anda basis data-terhubung Hive metastore adalah di dalam VPC Anda. Anda menggunakan Hive Server2 untuk mengelola metastore Hive Anda menggunakan CLI Hive.

Alur kerja untuk menggunakan metastores Hive eksternal dari Athena mencakup langkah-langkah berikut.

1. Anda membuat fungsi Lambda yang menghubungkan Athena ke metastore Hive yang ada di dalam VPC Anda.

1. Anda mendaftarkan nama katalog unik untuk metastore Hive Anda dan nama fungsi yang sesuai di akun Anda.

1. Saat Anda menjalankan permintaan Athena DDLL atau DDL yang menggunakan nama katalog, mesin permintaan Athena memanggil nama fungsi Lambda yang Anda terkait dengan nama katalog.

1. Menggunakan AWS PrivateLink, fungsi Lambda berkomunikasi dengan metastore Hive eksternal di VPC Anda dan menerima respons terhadap permintaan metadata. Athena menggunakan metadata dari metastore Hive eksternal Anda seperti menggunakan metadata dari default AWS Glue Data Catalog.

## Pertimbangan dan batasan
<a name="connect-to-a-data-source-hive-considerations"></a>

Saat Anda menggunakan Athena Data konektor untuk Eksternal Hive Metastore, pertimbangkan hal-hal berikut:
+ Anda dapat menggunakan CTAS untuk membuat tabel pada metastore Hive eksternal.
+ Anda dapat menggunakan INSERT INTO untuk menyisipkan data ke metastore Hive eksternal.
+ dukungan DDL untuk metastore Hive eksternal terbatas pada pernyataan berikut.
  + MENGUBAH DATABASE SET DBPROPERTIES
  + MENGUBAH TABEL TAMBAHKAN KOLOM
  + ALTER TABLE ADD PARTITION
  + UBAH PARTISI DROP TABEL
  + MENGUBAH NAMA TABEL PARTISI
  + MENGUBAH TABEL GANTI KOLOM
  + MENGUBAH LOKASI SET TABEL
  + MENGUBAH TABEL SET TBLPROPERTIES
  + BUAT BASIS DATA
  + CREATE TABLE
  + CREATE TABLE AS
  + MENGGAMBARKAN TABEL
  + DROP DATABASE
  + MEJA DROP
  + TAMPILKAN KOLOM
  + TAMPILKAN TABEL BUAT
  + TAMPILKAN PARTISI
  + TAMPILKAN SKEMA
  + TAMPILKAN TABEL
  + TBLPROPERTIES
+ Jumlah maksimum katalog terdaftar yang dapat Anda miliki adalah 1.000.
+ Otentikasi Kerberos untuk Hive metastore tidak didukung.
+ Untuk menggunakan driver JDBC dengan metastore Hive eksternal atau[Kueri gabungan](federated-queries.md), termasuk`MetadataRetrievalMethod=ProxyAPI`dalam string koneksi JDBC Anda. Untuk informasi tentang driver JDBC, lihat[Connect ke Amazon Athena dengan JDBC](connect-with-jdbc.md).
+ Kolom tersembunyi Hive`$path`,,`$bucket`, `$file_size` `$file_modified_time``$partition`, `$row_id` tidak dapat digunakan untuk pemfilteran kontrol akses berbutir halus. 
+ Sarang tabel sistem tersembunyi seperti `example_table$partitions` atau tidak `example_table$properties` didukung oleh kontrol akses berbutir halus.

### Izin
<a name="connect-to-a-data-source-hive-considerations-permissions"></a>

Prebuilt dan konektor data kustom mungkin memerlukan akses ke sumber daya berikut untuk berfungsi dengan benar. Periksa informasi untuk konektor yang Anda gunakan untuk memastikan bahwa Anda telah mengonfigurasi VPC Anda dengan benar. Untuk informasi tentang izin IAM yang diperlukan untuk menjalankan kueri dan membuat konektor sumber data di Athena, lihat[Izinkan akses ke Konektor Data Athena untuk Metastore Sarang Eksternal](hive-metastore-iam-access.md)dan[Izinkan akses fungsi Lambda ke metastores Hive eksternal](hive-metastore-iam-access-lambda.md).
+ **Amazon S3**— Selain menulis hasil kueri ke lokasi hasil kueri Athena di Amazon S3, konektor data juga menulis ke bucket tumpahan di Amazon S3. Konektivitas dan izin ke lokasi Amazon S3 ini diperlukan. Untuk informasi selengkapnya, lihat [Lokasi sementara di Amazon S3](#connect-to-data-source-hive-spill-location) dalam topik ini.
+ **Athena**— Akses diperlukan untuk memeriksa status kueri dan mencegah overscan.
+ **AWS Glue**— Akses diperlukan jika konektor Anda menggunakan AWS Glue metadata tambahan atau primer.
+ **AWS Key Management Service**
+ **Kebijakan** — Hive metastore, Athena Query Federation, dan UDFs memerlukan kebijakan selain. [AWS kebijakan terkelola: AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) Untuk informasi selengkapnya, lihat [Manajemen identitas dan akses di Athena](security-iam-athena.md).

### Lokasi sementara di Amazon S3
<a name="connect-to-data-source-hive-spill-location"></a>

Karena[Batasan](https://docs.aws.amazon.com/lambda/latest/dg/limits.html)pada ukuran respon fungsi Lambda, tanggapan lebih besar dari tumpahan ambang ke lokasi Amazon S3 yang Anda tentukan saat Anda membuat fungsi Lambda Anda. Athena membaca tanggapan ini dari Amazon S3 langsung. 

**catatan**  
Athena tidak menghapus file respon pada Amazon S3. Sebaiknya atur kebijakan penyimpanan untuk menghapus file respons secara otomatis. 

# Hubungkan Athena ke metastore Apache Hive
<a name="connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore"></a>

Untuk menghubungkan Athena ke metastore Apache Hive, Anda harus membuat dan mengonfigurasi fungsi Lambda. Untuk implementasi dasar, Anda dapat melakukan semua langkah yang diperlukan mulai dari konsol manajemen Athena.

**catatan**  
Prosedur berikut mengharuskan Anda memiliki izin untuk membuat IAM role kustom untuk fungsi Lambda. Jika Anda tidak memiliki izin untuk membuat peran kustom, Anda dapat menggunakan [implementasi referensi](connect-to-data-source-hive.md#connect-to-a-data-source-hive-features-reference-implementation) Athena untuk membuat fungsi Lambda secara terpisah, dan kemudian menggunakan AWS Lambda konsol untuk memilih peran IAM yang ada untuk fungsi tersebut. Untuk informasi selengkapnya, lihat [Hubungkan Athena ke metastore Hive menggunakan peran eksekusi IAM yang ada](connect-data-source-hive-existing-iam-role.md).

**Para conectar Athena a metastore a Hive**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Pilih **Sumber data dan katalog**.

1. Di kanan atas konsol, pilih **Buat sumber data**.

1. Pada halaman **Pilih sumber data, untuk Sumber** **data**, pilih metastore **S3 - Apache Hive**.

1. Pilih **Berikutnya**.

1. Di bagian **Rincian sumber data**, untuk **nama sumber data**, masukkan nama yang ingin Anda gunakan dalam pernyataan SQL saat Anda menanyakan sumber data dari Athena. Nama bisa sampai 127 karakter dan harus unik di akun Anda. Itu tidak dapat diubah setelah Anda membuatnya. Karakter yang valid adalah a-z, A-Z, 0-9, \$1 (garis bawah), @ (pada tanda) dan - (tanda hubung). Nama`awsdatacatalog`,, `hive``jmx`, dan dicadangkan `system` oleh Athena dan tidak dapat digunakan untuk nama sumber data. 

1. Untuk **fungsi Lambda**, pilih Create **Lambda function**, lalu pilih Create **a new** Lambda function in AWS Lambda

   **AthenaHiveMetastoreFunction**Halaman terbuka di AWS Lambda konsol. Halaman ini mencakup informasi rinci tentang konektor.  
![\[AthenaHiveMetastoreFunctionHalaman di AWS Lambda konsol.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connect-to-data-source-hive-4.png)

1. Di bawah**Pengaturan aplikasi**, masukkan parameter untuk fungsi Lambda Anda.
   + **LambdaFuncName**— Berikan nama untuk fungsi tersebut. Misalnya, **myHiveMetastore**.
   + **SpillLocation**— Tentukan lokasi Amazon S3 di akun ini untuk menyimpan metadata spillover jika ukuran respons fungsi Lambda melebihi 4 MB.
   + **HMSUris**— Masukkan URI host metastore Hive Anda yang menggunakan protokol Thrift di port 9083. Gunakan sintaks`thrift://<host_name>:9083`.
   + **LambdaMemory**— Tentukan nilai dari 128 MB hingga 3008 MB. Fungsi Lambda dialokasikan siklus CPU sebanding dengan jumlah memori yang Anda mengonfigurasi. Defaultnya adalah 1.024.
   + **LambdaTimeout**— Tentukan waktu pemanggilan Lambda maksimum yang diizinkan dalam hitungan detik dari 1 hingga 900 (900 detik adalah 15 menit). Default-nya adalah 300 detik (5 menit).
   + **VPCSecurityGroupIds**— Masukkan daftar grup keamanan VPC yang dipisahkan koma IDs untuk metastore Hive.
   + **VPCSubnetIds** — Masukkan daftar subnet IDs VPC yang dipisahkan koma untuk metastore Hive.

1. **Pilih **Saya mengakui bahwa aplikasi ini membuat peran IAM khusus**, lalu pilih Terapkan.**  
![\[Men-deploy aplikasi fungsi Lambda dari AWS Lambda konsol.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connect-to-data-source-hive-4a.png)

   Saat deployment selesai, fungsi Anda muncul dalam daftar aplikasi Lambda Anda. Sekarang bahwa fungsi metastore Hive telah dikerahkan ke akun Anda, Anda dapat mengonfigurasi Athena untuk menggunakannya.

1. Kembali ke halaman **Masukkan detail sumber data** di konsol Athena.

1. Di bagian **fungsi Lambda**, pilih ikon penyegaran di sebelah kotak pencarian fungsi Lambda. Menyegarkan daftar fungsi yang tersedia menyebabkan fungsi yang baru dibuat muncul dalam daftar.

1. Pilih nama fungsi yang baru saja Anda buat di konsol Lambda. ARN dari fungsi Lambda ditampilkan.

1. (Opsional) Untuk **Tag**, tambahkan pasangan nilai kunci untuk dikaitkan dengan sumber data ini. Untuk informasi selengkapnya tentang tag, lihat [Tag sumber daya Athena](tags.md).

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, tinjau detail sumber data, lalu pilih **Buat sumber data**. 

1. Bagian **Detail sumber data** pada halaman untuk sumber data Anda menunjukkan informasi tentang konektor baru Anda. 

   Anda sekarang dapat menggunakan **nama sumber Data** yang Anda tentukan untuk referensi metastore Hive dalam kueri SQL Anda di Athena. Dalam kueri SQL Anda, gunakan sintaks contoh berikut, mengganti`hms-catalog-1`dengan nama katalog yang Anda tentukan sebelumnya.

   ```
   SELECT * FROM hms-catalog-1.CustomerData.customers 
   ```

1. Untuk informasi tentang melihat, mengedit, atau menghapus sumber data yang Anda buat, lihat[Kelola sumber data Anda](data-sources-managing.md).

# Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data Hive
<a name="connect-data-source-sar-hive"></a>

Untuk menggunakan konektor sumber data Athena untuk Hive, Anda dapat menggunakan [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/)alih-alih memulai dengan konsol Athena. Gunakan AWS Serverless Application Repository untuk menemukan konektor yang ingin Anda gunakan, berikan parameter yang dibutuhkan konektor, dan kemudian gunakan konektor ke akun Anda. Kemudian, setelah Anda menggunakan konektor, Anda menggunakan konsol Athena untuk membuat sumber data tersedia untuk Athena.

**Untuk menggunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data untuk Hive ke akun Anda**

1. Masuk ke Konsol Manajemen AWS dan buka Repositori **Aplikasi Tanpa Server**.

1. Di panel navigasi, pilih**Aplikasi yang tersedia**.

1. Pilih opsi**Menampilkan aplikasi yang membuat IAM role khusus atau kebijakan sumber daya**.

1. Dalam kotak pencarian, masukkan **Hive**. Konektor yang muncul meliputi dua berikut ini:
   + **AthenaHiveMetastoreFunction**— Fungsi Lambda`.jar`file.
   + **AthenaHiveMetastoreFunctionWithLayer**— Lapisan lambda dan fungsi Lambda tipis`.jar`file.

    Kedua aplikasi memiliki fungsi yang sama dan hanya berbeda dalam implementasinya. Anda dapat menggunakan salah satu untuk membuat fungsi Lambda yang menghubungkan Athena ke metastore Hive Anda.

1. Pilih nama konektor yang ingin Anda gunakan. Tutorial ini menggunakan **AthenaHiveMetastoreFunction**.  
![\[Pilih nama konektor sumber data Athena untuk Hive.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connect-data-source-sar-hive-1.png)

1. Di bawah**Pengaturan aplikasi**, masukkan parameter untuk fungsi Lambda Anda.
   + **LambdaFuncName**— Berikan nama untuk fungsi tersebut. Misalnya, **myHiveMetastore**.
   + **SpillLocation**— Tentukan lokasi Amazon S3 di akun ini untuk menyimpan metadata spillover jika ukuran respons fungsi Lambda melebihi 4 MB.
   + **HMSUris**— Masukkan URI host metastore Hive Anda yang menggunakan protokol Thrift di port 9083. Gunakan sintaks`thrift://<host_name>:9083`.
   + **LambdaMemory**— Tentukan nilai dari 128 MB hingga 3008 MB. Fungsi Lambda dialokasikan siklus CPU sebanding dengan jumlah memori yang Anda mengonfigurasi. Defaultnya adalah 1.024.
   + **LambdaTimeout**— Tentukan waktu pemanggilan Lambda maksimum yang diizinkan dalam hitungan detik dari 1 hingga 900 (900 detik adalah 15 menit). Default-nya adalah 300 detik (5 menit).
   + **VPCSecurityGroupIds**— Masukkan daftar grup keamanan VPC yang dipisahkan koma IDs untuk metastore Hive.
   + **VPCSubnetIds** — Masukkan daftar subnet IDs VPC yang dipisahkan koma untuk metastore Hive.

1. Di bagian kanan bawah**Detail aplikasi**halaman, pilih**Saya mengakui bahwa aplikasi ini menciptakan IAM role kustom**, lalu pilih**Penerapan**.

Pada titik ini, Anda dapat mengonfigurasi Athena untuk menggunakan fungsi Lambda Anda untuk terhubung ke metastore Hive Anda. Untuk langkah, lihat [Konfigurasikan Athena untuk menggunakan konektor metastore Hive yang digunakan](connect-data-source-hive-existing-lambda.md).

# Hubungkan Athena ke metastore Hive menggunakan peran eksekusi IAM yang ada
<a name="connect-data-source-hive-existing-iam-role"></a>

Untuk menghubungkan metastore Hive eksternal Anda ke Athena dengan fungsi Lambda yang menggunakan IAM role yang ada, Anda dapat menggunakan implementasi referensi Athena dari konektor Athena untuk metastore Hive eksternal.

Tiga langkah utama adalah sebagai berikut:

1. **[Kloning dan bangun](#connect-data-source-hive-existing-iam-role-clone-and-build-the-lambda-function)** - Kloning implementasi referensi Athena dan buat file JAR yang berisi kode fungsi Lambda.

1. **[AWS Lambda konsol](#connect-data-source-hive-existing-iam-role-aws-lambda-console)** — Di AWS Lambda konsol, buat fungsi Lambda, tetapkan peran eksekusi IAM yang ada, dan unggah kode fungsi yang Anda buat.

1. Konsol **[Amazon Athena — Di konsol](connect-data-source-hive-existing-lambda.md)** Amazon Athena, buat nama sumber data yang dapat Anda gunakan untuk merujuk ke metastore Hive eksternal di kueri Athena Anda.

Jika Anda sudah memiliki izin untuk membuat peran IAM kustom, Anda dapat menggunakan alur kerja sederhana yang menggunakan konsol Athena dan untuk membuat dan AWS Serverless Application Repository mengonfigurasi fungsi Lambda. Untuk informasi selengkapnya, lihat [Hubungkan Athena ke metastore Apache Hive](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md).

## Prasyarat
<a name="connect-data-source-hive-existing-iam-role-prerequisites"></a>
+ Git harus diinstal pada sistem Anda.
+ Anda harus memiliki[Apache Maven](https://maven.apache.org/)diinstal.
+ Anda memiliki peran eksekusi IAM yang dapat Anda tetapkan untuk fungsi Lambda. Untuk informasi selengkapnya, lihat [Izinkan akses fungsi Lambda ke metastores Hive eksternal](hive-metastore-iam-access-lambda.md).

## Kloning dan bangun fungsi Lambda
<a name="connect-data-source-hive-existing-iam-role-clone-and-build-the-lambda-function"></a>

[Kode fungsi untuk implementasi referensi Athena adalah proyek Maven yang terletak di awslabs/. GitHub aws-athena-hive-metastore](https://github.com/awslabs/aws-athena-hive-metastore) Untuk informasi rinci tentang proyek, lihat file README yang sesuai pada GitHub atau [Ubah konektor metastore Hive eksternal Athena](datastores-hive-reference-implementation.md) topik dalam dokumentasi ini.

**Untuk mengkloning dan membangun kode fungsi Lambda**

1. Masukkan perintah berikut untuk mengkloning implementasi referensi Athena:

   ```
   git clone https://github.com/awslabs/aws-athena-hive-metastore
   ```

1. Jalankan perintah berikut untuk membangun`.jar`untuk fungsi Lambda:

   ```
   mvn clean install
   ```

   Setelah proyek berhasil dibangun, berikut`.jar`dibuat di folder target proyek Anda:

   `hms-lambda-func-1.0-SNAPSHOT-withdep.jar`

   Di bagian selanjutnya, Anda menggunakan AWS Lambda konsol untuk mengunggah file ini ke akun Amazon Web Services Anda.

## Buat dan konfigurasikan fungsi Lambda di konsol AWS Lambda
<a name="connect-data-source-hive-existing-iam-role-aws-lambda-console"></a>

Di bagian ini, Anda menggunakan AWS Lambda konsol untuk membuat fungsi yang menggunakan peran eksekusi IAM yang ada. Setelah Anda mengonfigurasi VPC untuk fungsi, Anda mengunggah kode fungsi dan mengonfigurasi variabel lingkungan untuk fungsi.

### Buat fungsi Lambda
<a name="connect-data-source-hive-existing-iam-role-create-the-lambda-function"></a>

Pada langkah ini, Anda membuat fungsi di AWS Lambda konsol yang menggunakan peran IAM yang ada.

**Untuk membuat fungsi Lambda yang menggunakan IAM role yang sudah ada**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Di panel navigasi, pilih **Fungsi**.

1. Pilih **Buat fungsi**.

1. Pilih **Penulis dari scratch**.

1. Untuk**Nama fungsi**Masukkan nama fungsi Lambda Anda (misalnya,**EHMSBasedLambda**).

1. Untuk**Waktu pengoperasian**Pilih**Java 8**.

1. (Opsional) Di bagian **Izin**, luaskan **Ubah peran eksekusi default**.

1. Untuk**Peran eksekusi**Pilih**Gunakan peran yang sudah ada**.

1. Untuk**Peran yang ada**, pilih peran eksekusi IAM yang fungsi Lambda Anda akan gunakan untuk Athena (contoh ini menggunakan peran yang disebut`AthenaLambdaExecutionRole`).

1. Perluas **Pengaturan lanjutan**.

1. Pilih **Aktifkan Jaringan**.

1. Untuk**VPC**, pilih VPC yang fungsi Anda akan memiliki akses ke.

1. Untuk **Subnet**, pilih subnet VPV untuk digunakan oleh Lambda.

1. Untuk**Grup keamanan**, pilih grup keamanan VPC untuk digunakan Lambda.

1. Pilih **Buat fungsi**. AWS Lambda Konsol dan membuka halaman konfigurasi untuk fungsi Anda dan mulai membuat fungsi Anda.

### Unggah kode dan konfigurasikan fungsi Lambda
<a name="connect-data-source-hive-existing-iam-role-upload-and-configure"></a>

Saat konsol memberi tahu Anda bahwa fungsi Anda telah berhasil dibuat, Anda siap untuk mengunggah kode fungsi dan mengonfigurasi variabel lingkungannya.

**Untuk mengunggah kode fungsi Lambda Anda dan mengonfigurasi variabel lingkungannya**

1. Di konsol Lambda, pastikan Anda berada di tab **Kode** pada halaman fungsi yang Anda tentukan.

1. Untuk **Sumber kode**, pilih **Unggah dari**, lalu pilih **file.zip atau.jar.**

1. Unggah`hms-lambda-func-1.0-SNAPSHOT-withdep.jar`yang Anda buat sebelumnya.

1. Pada halaman fungsi Lambda Anda, pilih tab **Konfigurasi**.

1. Dari panel di sebelah kiri, pilih **variabel Lingkungan**.

1. Di bagian **Variabel lingkungan**, pilih **Edit**.  
![\[PilihMengeditUntuk mengedit variabel lingkungan untuk fungsi Lambda.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connect-data-source-hive-existing-iam-role-5.png)

1. Pada halaman **Edit variabel lingkungan**, gunakan opsi **Tambahkan variabel lingkungan** untuk menambahkan kunci dan nilai variabel lingkungan berikut:
   + **HMS\$1URIS**— Gunakan sintaks berikut untuk memasukkan URI host metastore Hive Anda yang menggunakan protokol Thrift di port 9083.

     ```
     thrift://<host_name>:9083
     ```
   + **SPILL\$1LOCATION - Tentukan lokasi** Amazon S3 di akun Amazon Web Services Anda untuk menyimpan metadata spillover jika ukuran respons fungsi Lambda melebihi 4 MB.  
![\[Menentukan nilai untuk variabel lingkungan fungsi Lambda.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connect-data-source-hive-existing-iam-role-6.png)

1. Pilih **Simpan**.

Pada titik ini, Anda siap mengonfigurasi Athena untuk menggunakan fungsi Lambda Anda untuk terhubung ke metastore Hive Anda. Untuk langkah, lihat [Konfigurasikan Athena untuk menggunakan konektor metastore Hive yang digunakan](connect-data-source-hive-existing-lambda.md).

# Konfigurasikan Athena untuk menggunakan konektor metastore Hive yang digunakan
<a name="connect-data-source-hive-existing-lambda"></a>

Setelah Anda menerapkan konektor sumber data Lambda `AthenaHiveMetastoreFunction` seperti ke akun Anda, Anda dapat mengonfigurasi Athena untuk menggunakannya. Untuk melakukannya, Anda membuat nama sumber data yang merujuk ke metastore Hive eksternal Anda untuk digunakan dalam kueri Athena Anda.

**Untuk menghubungkan Athena ke metastore Hive Anda menggunakan fungsi Lambda yang ada**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih **Buat sumber data**.

1. Pada halaman **Pilih sumber data, untuk Sumber** **data**, pilih metastore **S3 - Apache Hive**.

1. Pilih **Berikutnya**.

1. Di bagian **Rincian sumber data**, untuk **nama sumber data**, masukkan nama yang ingin Anda gunakan dalam pernyataan SQL saat Anda menanyakan sumber data dari Athena (misalnya`MyHiveMetastore`,). Nama bisa sampai 127 karakter dan harus unik di akun Anda. Itu tidak dapat diubah setelah Anda membuatnya. Karakter yang valid adalah a-z, A-Z, 0-9, \$1 (garis bawah), @ (pada tanda) dan - (tanda hubung). Nama`awsdatacatalog`,, `hive``jmx`, dan dicadangkan `system` oleh Athena dan tidak dapat digunakan untuk nama sumber data. 

1. Di bagian **Detail koneksi**, gunakan kotak **Pilih atau masukkan fungsi Lambda** untuk memilih nama fungsi yang baru saja Anda buat. ARN dari fungsi Lambda ditampilkan.

1. (Opsional) Untuk **Tag**, tambahkan pasangan nilai kunci untuk dikaitkan dengan sumber data ini. Untuk informasi selengkapnya tentang tag, lihat [Tag sumber daya Athena](tags.md).

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, tinjau detail sumber data, lalu pilih **Buat sumber data**. 

1. Bagian **Detail sumber data** pada halaman untuk sumber data Anda menunjukkan informasi tentang konektor baru Anda.

   Anda sekarang dapat menggunakan **nama sumber Data** yang Anda tentukan untuk referensi metastore Hive dalam kueri SQL Anda di Athena.

   Dalam kueri SQL Anda, gunakan sintaks contoh berikut, ganti `ehms-catalog` dengan nama sumber data yang Anda tentukan sebelumnya.

   ```
   SELECT * FROM ehms-catalog.CustomerData.customers 
   ```

1. Untuk melihat, mengedit, atau menghapus sumber data yang Anda buat, lihat[Kelola sumber data Anda](data-sources-managing.md).

# Hilangkan nama katalog dalam kueri metastore Hive eksternal
<a name="datastores-hive-default-catalog"></a>

Saat Anda menjalankan DDLL dan DDL kueri pada metastores Hive eksternal, Anda dapat menyederhanakan sintaks kueri Anda dengan menghilangkan nama katalog jika nama yang dipilih dalam editor kueri. Pembatasan tertentu berlaku untuk fungsi ini.

## Pernyataan DXML
<a name="datastores-hive-default-catalog-dml-statements"></a>

**Untuk menjalankan kueri dengan katalog terdaftar**

1. Anda dapat menempatkan nama sumber data sebelum database menggunakan sintaks`[[data_source_name].database_name].table_name`, seperti pada contoh berikut.

   ```
   select * from  "hms-catalog-1".hms_tpch.customer limit 10;
   ```

1. Ketika sumber data yang ingin Anda gunakan sudah dipilih di editor kueri, Anda dapat menghilangkan nama dari kueri, seperti pada contoh berikut.

   ```
   select * from hms_tpch.customer limit 10:
   ```  
![\[Sebuah query DMLmenggunakan sumber data default.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/datastores-hive-default-catalog-2.png)

1. Bila Anda menggunakan beberapa sumber data dalam kueri, Anda hanya dapat menghilangkan nama sumber data default, dan harus menentukan nama lengkap untuk sumber data non-default. 

   Misalnya, misalkan `AwsDataCatalog` dipilih sebagai sumber data default di editor kueri. `FROM`Pernyataan dalam kutipan kueri berikut sepenuhnya memenuhi syarat dua nama sumber data pertama tetapi menghilangkan nama untuk sumber data ketiga karena ada di katalog data. AWS Glue 

   ```
   ...
   FROM ehms01.hms_tpch.customer,
            "hms-catalog-1".hms_tpch.orders,
            hms_tpch.lineitem
   ...
   ```

## Pernyataan DDL
<a name="datastores-hive-default-catalog-ddl-statements"></a>

Pernyataan Athena DDL berikut mendukung awalan nama katalog. Nama katalog awalan dalam pernyataan DDL lainnya menyebabkan kesalahan sintaks.

```
SHOW TABLES [IN [catalog_name.]database_name] ['regular_expression']

SHOW TBLPROPERTIES [[catalog_name.]database_name.]table_name [('property_name')]

SHOW COLUMNS IN [[catalog_name.]database_name.]table_name

SHOW PARTITIONS [[catalog_name.]database_name.]table_name

SHOW CREATE TABLE [[catalog_name.][database_name.]table_name

DESCRIBE [EXTENDED | FORMATTED] [[catalog_name.][database_name.]table_name [PARTITION partition_spec] [col_name ( [.field_name] | [.'$elem$'] | [.'$key$'] | [.'$value$'] )]
```

Seperti halnya pernyataan DHTML, Anda dapat menghilangkan sumber data dan awalan database dari kueri saat sumber data dan database dipilih di editor kueri.

Pada gambar berikut, sumber `hms-catalog-1` data dan `hms_tpch` database dipilih di editor kueri. `show create table customer`Pernyataan berhasil meskipun `hms-catalog-1` awalan dan nama `hms_tpch` database dihilangkan dari kueri itu sendiri.

![\[Sebuah pernyataan DDL menggunakan katalog default.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/datastores-hive-default-catalog-4.png)


## Menentukan sumber data default dalam string koneksi JDBC
<a name="datastores-hive-default-catalog-jdbc"></a>

[Saat Anda menggunakan Driver Athena JDBC untuk menghubungkan Athena ke metastore Hive eksternal, Anda dapat menggunakan `Catalog` parameter untuk menentukan nama sumber data default dalam string koneksi Anda di editor SQL seperti meja kerja SQL.](https://www.sql-workbench.eu/index.html)

**catatan**  
Untuk mengunduh driver Athena JDBC terbaru, lihat Menggunakan [Athena](https://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html) dengan driver JDBC.

String koneksi berikut menentukan sumber *hms-catalog-name* data default.

```
    jdbc:awsathena://AwsRegion=us-east-1;S3OutputLocation=s3://amzn-s3-demo-bucket/lambda/results/;Workgroup=AmazonAthenaPreviewFunctionality;Catalog=hms-catalog-name;
```

Gambar berikut menunjukkan contoh URL koneksi JDBC seperti yang dikonfigurasi dalam SQL Workbench.

![\[Mengkonfigurasi URL koneksi JDBC di SQL Workbench.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/datastores-hive-default-catalog-jdbc-1.jpg)


# Bekerja dengan tampilan Hive
<a name="hive-views"></a>

Anda dapat menggunakan Athena untuk menanyakan tampilan yang ada di metastores Apache Hive eksternal Anda. Athena menerjemahkan pandangan Anda untuk Anda on-the-fly saat runtime tanpa mengubah tampilan asli atau menyimpan terjemahannya.

Misalnya, Anda memiliki tampilan Hive seperti berikut yang menggunakan sintaks yang tidak didukung di Athena seperti: `LATERAL VIEW explode()`

```
CREATE VIEW team_view AS 
SELECT team, score 
FROM matches 
LATERAL VIEW explode(scores) m AS score
```

Athena menerjemahkan string kueri tampilan Hive menjadi pernyataan seperti berikut yang dapat dijalankan Athena:

```
SELECT team, score
FROM matches
CROSS JOIN UNNEST(scores) AS m (score)
```

Untuk informasi tentang menghubungkan metastore Hive eksternal ke Athena, lihat. [Gunakan metastore Hive eksternal](connect-to-data-source-hive.md)

## Pertimbangan dan batasan
<a name="hive-views-considerations-and-limitations"></a>

Saat menanyakan pandangan Hive dari Athena, pertimbangkan hal-hal berikut:
+ Athena tidak mendukung pembuatan tampilan Hive. Anda dapat membuat tampilan Hive di metastore Hive eksternal Anda, yang kemudian dapat Anda kueri dari Athena.
+ Athena tidak mendukung kebiasaan UDFs untuk tampilan Hive.
+ Karena masalah yang diketahui di konsol Athena, tampilan Sarang muncul di bawah daftar tabel, bukan daftar tampilan.
+ Meskipun proses penerjemahan otomatis, fungsi Hive tertentu tidak didukung untuk tampilan Hive atau memerlukan penanganan khusus. Untuk informasi selengkapnya, lihat bagian berikut.

## Keterbatasan dukungan fungsi sarang
<a name="hive-views-function-limitations"></a>

Bagian ini menyoroti fungsi Sarang yang tidak didukung Athena untuk tampilan Hive atau yang memerlukan perlakuan khusus. Saat ini, karena Athena terutama mendukung fungsi dari Hive 2.2.0, fungsi yang hanya tersedia dalam versi yang lebih tinggi (seperti Hive 4.0.0) tidak tersedia. Untuk daftar lengkap fungsi Hive, lihat [Manual bahasa Hive UDF](https://cwiki.apache.org/confluence/display/hive/languagemanual+udf).

### Fungsi agregat
<a name="hive-views-aggregate-functions"></a>

#### Fungsi agregat yang membutuhkan penanganan khusus
<a name="hive-views-aggregate-functions-special-handling"></a>

Fungsi agregat berikut untuk tampilan Hive memerlukan penanganan khusus.
+ **Rata-rata** — Alih-alih`avg(INT i)`, gunakan`avg(CAST(i AS DOUBLE))`.

#### Fungsi agregat tidak didukung
<a name="hive-views-aggregate-functions-not-supported"></a>

Fungsi agregat Hive berikut tidak didukung di Athena untuk tampilan Hive.

```
covar_pop
histogram_numeric
ntile
percentile
percentile_approx
```

Fungsi regresi seperti`regr_count`,`regr_r2`, dan tidak `regr_sxx` didukung di Athena untuk tampilan Hive.

### Fungsi tanggal tidak didukung
<a name="hive-views-date-functions-not-supported"></a>

Fungsi tanggal sarang berikut tidak didukung di Athena untuk tampilan Hive.

```
date_format(date/timestamp/string ts, string fmt)
day(string date)
dayofmonth(date)
extract(field FROM source)
hour(string date)
minute(string date)
month(string date)
quarter(date/timestamp/string)
second(string date)
weekofyear(string date)
year(string date)
```

### Fungsi masking tidak didukung
<a name="hive-views-masking-functions-not-supported"></a>

Fungsi penyembunyian sarang seperti`mask()`, dan tidak `mask_first_n()` didukung di Athena untuk tampilan Sarang.

### Fungsi lain-lain
<a name="hive-views-miscellaneous-functions"></a>

#### Fungsi lain-lain yang membutuhkan penanganan khusus
<a name="hive-views-supported-miscellaneous-functions-special-handling"></a>

Fungsi lain-lain berikut untuk tampilan Hive memerlukan penanganan khusus.
+ **md5** — Athena `md5(binary)` mendukung tetapi tidak. `md5(varchar)`
+ **Meledak** - Athena `explode` mendukung ketika digunakan dalam sintaks berikut:

  ```
  LATERAL VIEW [OUTER] EXPLODE(<argument>)
  ```
+ **Posexplode -** Athena mendukung `posexplode` ketika digunakan dalam sintaks berikut:

  ```
  LATERAL VIEW [OUTER] POSEXPLODE(<argument>)           
  ```

  Dalam `(pos, val)` output, Athena memperlakukan `pos` kolom sebagai. `BIGINT` Karena itu, Anda mungkin perlu mentransmisikan `pos` kolom `BIGINT` untuk menghindari tampilan basi. Contoh berikut menggambarkan teknik ini.

  ```
  SELECT CAST(c AS BIGINT) AS c_bigint, d 
  FROM table LATERAL VIEW POSEXPLODE(<argument>) t AS c, d
  ```

#### Fungsi lain-lain tidak didukung
<a name="hive-views-unsupported-miscellaneous-functions-not-supported"></a>

Fungsi Hive berikut tidak didukung di Athena untuk tampilan Hive.

```
aes_decrypt
aes_encrypt
current_database
current_user
inline
java_method
logged_in_user
reflect
sha/sha1/sha2
stack
version
```

### Operator
<a name="hive-views-operators"></a>

#### Operator yang membutuhkan penanganan khusus
<a name="hive-views-operators-special-handling"></a>

Operator berikut untuk tampilan Hive memerlukan penanganan khusus.
+ **Operator mod (%)** - Karena `DOUBLE` tipe secara implisit melemparkan ke`DECIMAL(x,y)`, sintaks berikut dapat menyebabkan pesan kesalahan View is stale:

  ```
  a_double % 1.0 AS column
  ```

  Untuk mengatasi masalah ini, gunakan`CAST`, seperti pada contoh berikut.

  ```
  CAST(a_double % 1.0 as DOUBLE) AS column
  ```
+ **Operator divisi (/)** — Di Hive, `int` dibagi dengan `int` menghasilkan a`double`. Di Athena, operasi yang sama menghasilkan terpotong. `int`

#### Operator tidak didukung
<a name="hive-views-operators-not-supported"></a>

Athena tidak mendukung operator berikut untuk tampilan Hive.

**\$1A — bitwise** `NOT`

**A ^ b** — bitwise `XOR`

**A & b** — bitwise `AND`

**A \$1 b** — bitwise `OR`

**A <=> b** — Mengembalikan hasil yang sama dengan operator sama dengan (`=`) untuk operan non-null. Mengembalikan `TRUE` `FALSE` jika keduanya`NULL`, jika salah satunya`NULL`.

### Fungsi string
<a name="hive-views-string-functions"></a>

#### Fungsi string yang membutuhkan penanganan khusus
<a name="hive-views-string-functions-special-handling"></a>

Fungsi string Hive berikut untuk tampilan Hive memerlukan penanganan khusus.
+ **chr (bigint\$1double a)** — Hive memungkinkan argumen negatif; Athena tidak.
+ **instr (string str, string substr) - Karena** pemetaan Athena untuk `instr` fungsi kembali `BIGINT` alih-alih, gunakan sintaks berikut: `INT`

  ```
  CAST(instr(string str, string substr) as INT)         
  ```

  Tanpa langkah ini, tampilan akan dianggap basi.
+ **length (string a)** - Karena pemetaan Athena untuk `length` fungsi kembali `BIGINT` alih-alih`INT`, gunakan sintaks berikut sehingga tampilan tidak akan dianggap basi:

  ```
  CAST(length(string str) as INT)
  ```

#### Fungsi string tidak didukung
<a name="hive-views-string-functions-not-supported"></a>

Fungsi string Hive berikut tidak didukung di Athena untuk tampilan Hive.

```
ascii(string str)
character_length(string str)
decode(binary bin, string charset)
encode(string src, string charset)
elt(N int,str1 string,str2 string,str3 string,...)
field(val T,val1 T,val2 T,val3 T,...)
find_in_set(string str, string strList)
initcap(string A)
levenshtein(string A, string B)
locate(string substr, string str[, int pos])
octet_length(string str)
parse_url(string urlString, string partToExtract [, string keyToExtract])
printf(String format, Obj... args)
quote(String text)
regexp_extract(string subject, string pattern, int index)
repeat(string str, int n)
sentences(string str, string lang, string locale)
soundex(string A)
space(int n)
str_to_map(text[, delimiter1, delimiter2])
substring_index(string A, string delim, int count)
```

### XPath fungsi tidak didukung
<a name="hive-views-xpath-functions-not-supported"></a>

 XPath Fungsi sarang seperti`xpath`,`xpath_short`, dan tidak `xpath_int` didukung di Athena untuk tampilan Sarang.

## Pemecahan masalah
<a name="hive-views-troubleshooting"></a>

Saat Anda menggunakan tampilan Hive di Athena, Anda mungkin mengalami masalah berikut:
+ **Tampilan *<view name>* basi** — Pesan ini biasanya menunjukkan ketidakcocokan tipe antara tampilan di Hive dan Athena. Jika fungsi yang sama dalam fungsi [Hive LanguageManual UDF](https://cwiki.apache.org/confluence/display/hive/languagemanual+udf) dan [Presto dan dokumentasi operator](https://prestodb.io/docs/current/functions.html) memiliki tanda tangan yang berbeda, coba casting tipe data yang tidak cocok.
+ **Fungsi tidak terdaftar** - Athena saat ini tidak mendukung fungsi tersebut. Untuk detailnya, lihat informasi sebelumnya dalam dokumen ini.

# Gunakan AWS CLI metastores with Hive
<a name="datastores-hive-cli"></a>

Anda dapat menggunakan`aws athena`CLI perintah untuk mengelola katalog data metastore Hive yang Anda gunakan dengan Athena. Setelah Anda menentukan satu atau lebih katalog untuk digunakan dengan Athena, Anda dapat mereferensikan katalog tersebut di`aws athena`DDDL dan DDLL perintah.

## Menggunakan AWS CLI untuk mengelola katalog metastore Hive
<a name="datastores-hive-cli-manage-hive-catalogs"></a>

### Mendaftarkan katalog: Create-data-catalog
<a name="datastores-hive-cli-registering-a-catalog"></a>

Untuk mendaftarkan katalog data, Anda menggunakan`create-data-catalog`Perintah. Gunakan`name`Parameter untuk menentukan nama yang ingin Anda gunakan sebagai katalog. Lulus ARN fungsi Lambda ke`metadata-function`opsi`parameters`argumen. Untuk membuat tanda untuk katalog baru, gunakan`tags`Parameter dengan satu atau beberapa spasi yang dipisahkan`Key=key,Value=value`pasangan argumen.

Contoh berikut register katalog metastore Hive bernama`hms-catalog-1`. Perintah telah diformat untuk dibaca.

```
$ aws athena create-data-catalog 
 --name "hms-catalog-1" 
 --type "HIVE"
 --description "Hive Catalog 1"
 --parameters "metadata-function=arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-v3,sdk-version=1.0" 
 --tags Key=MyKey,Value=MyValue
 --region us-east-1
```

### Menampilkan rincian katalog: Get-data-catalog
<a name="datastores-hive-cli-showing-details-of-a-catalog"></a>

Untuk menampilkan detail katalog, lulus nama katalog untuk`get-data-catalog`seperti pada contoh berikut.

```
$ aws athena get-data-catalog --name "hms-catalog-1" --region us-east-1
```

Hasil contoh berikut adalah dalam format JSON.

```
{
    "DataCatalog": {
        "Name": "hms-catalog-1",
        "Description": "Hive Catalog 1",
        "Type": "HIVE",
        "Parameters": {
            "metadata-function": "arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-v3",
            "sdk-version": "1.0"
        }
    }
}
```

### Daftar katalog terdaftar: List-data-catalogs
<a name="datastores-hive-cli-listing-registered-catalogs"></a>

Untuk daftar katalog terdaftar, gunakan`list-data-catalogs`dan opsional menentukan wilayah seperti pada contoh berikut. Katalog yang terdaftar selalu mencakup AWS Glue.

```
$ aws athena list-data-catalogs --region us-east-1
```

Hasil contoh berikut adalah dalam format JSON.

```
{
    "DataCatalogs": [
        {
            "CatalogName": "AwsDataCatalog",
            "Type": "GLUE"
        },
        {
            "CatalogName": "hms-catalog-1",
            "Type": "HIVE",
            "Parameters": {
                "metadata-function": "arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-v3",
                "sdk-version": "1.0"
            }
        }
    ]
}
```

### Memperbarui katalog: Update-data-catalog
<a name="datastores-hive-cli-updating-a-catalog"></a>

Untuk memperbarui katalog data, gunakan`update-data-catalog`seperti pada contoh berikut. Perintah telah diformat untuk dibaca.

```
$ aws athena update-data-catalog 
 --name "hms-catalog-1" 
 --type "HIVE"
 --description "My New Hive Catalog Description" 
 --parameters "metadata-function=arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new,sdk-version=1.0" 
 --region us-east-1
```

### Menghapus katalog: Delete-data-catalog
<a name="datastores-hive-cli-deleting-a-catalog"></a>

Untuk menghapus katalog data, gunakan`delete-data-catalog`seperti pada contoh berikut.

```
$ aws athena delete-data-catalog --name "hms-catalog-1" --region us-east-1
```

### Menampilkan rincian database: Get-Database
<a name="datastores-hive-cli-showing-details-of-a-database"></a>

Untuk menampilkan detail basis data, lulus nama katalog dan basis data untuk`get-database`seperti pada contoh berikut.

```
$ aws athena get-database --catalog-name hms-catalog-1 --database-name mydb
```

Hasil contoh berikut adalah dalam format JSON.

```
{
    "Database": {
        "Name": "mydb",
        "Description": "My database",
        "Parameters": {
            "CreatedBy": "Athena",
            "EXTERNAL": "TRUE"
        }
    }
}
```

### Daftar database dalam katalog: Daftar-database
<a name="datastores-hive-cli-listing-databases"></a>

Untuk daftar basis data dalam katalog, gunakan`list-databases`dan opsional menentukan wilayah seperti pada contoh berikut.

```
$ aws athena list-databases --catalog-name AwsDataCatalog --region us-west-2
```

Hasil contoh berikut adalah dalam format JSON.

```
{
    "DatabaseList": [
        {
            "Name": "default"
        },
        {
            "Name": "mycrawlerdatabase"
        },
        {
            "Name": "mydatabase"
        },
        {
            "Name": "sampledb",
            "Description": "Sample database",
            "Parameters": {
                "CreatedBy": "Athena",
                "EXTERNAL": "TRUE"
            }
        },
        {
            "Name": "tpch100"
        }
    ]
}
```

### Menampilkan detail tabel: Get-table-metadata
<a name="datastores-hive-cli-showing-details-of-a-table"></a>

Untuk menampilkan metadata untuk tabel, termasuk nama kolom dan tipe data, lulus nama katalog, basis data, dan nama tabel untuk`get-table-metadata`seperti pada contoh berikut.

```
$ aws athena get-table-metadata --catalog-name AwsDataCatalog --database-name mydb --table-name cityuseragent
```

Hasil contoh berikut adalah dalam format JSON.

```
{
    "TableMetadata": {
        "Name": "cityuseragent",
            "CreateTime": 1586451276.0,
            "LastAccessTime": 0.0,
            "TableType": "EXTERNAL_TABLE",
            "Columns": [
                {
                    "Name": "city",
                    "Type": "string"
                },
                {
                    "Name": "useragent1",
                    "Type": "string"
                }
            ],
            "PartitionKeys": [],
            "Parameters": {
                "COLUMN_STATS_ACCURATE": "false",
                "EXTERNAL": "TRUE",
                "inputformat": "org.apache.hadoop.mapred.TextInputFormat",
                "last_modified_by": "hadoop",
                "last_modified_time": "1586454879",
                "location": "s3://amzn-s3-demo-bucket/",
                "numFiles": "1",
                "numRows": "-1",
                "outputformat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
                "rawDataSize": "-1",
                "serde.param.serialization.format": "1",
                "serde.serialization.lib": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
                "totalSize": "61"
            }
        }
}
```

### Menampilkan metadata untuk semua tabel dalam database: List-table-metadata
<a name="datastores-hive-cli-showing-all-table-metadata"></a>

Untuk menampilkan metadata untuk semua tabel dalam basis data, lulus nama katalog dan basis data nama untuk`list-table-metadata`Perintah. Parameter`list-table-metadata`serupa dengan`get-table-metadata`, kecuali bahwa Anda tidak menentukan nama tabel. Untuk membatasi jumlah hasil, Anda dapat menggunakan`--max-results`, seperti pada contoh berikut. 

```
$ aws athena list-table-metadata --catalog-name AwsDataCatalog --database-name sampledb --region us-east-1 --max-results 2
```

Hasil contoh berikut adalah dalam format JSON.

```
{
    "TableMetadataList": [
        {
            "Name": "cityuseragent",
            "CreateTime": 1586451276.0,
            "LastAccessTime": 0.0,
            "TableType": "EXTERNAL_TABLE",
            "Columns": [
                {
                    "Name": "city",
                    "Type": "string"
                },
                {
                    "Name": "useragent1",
                    "Type": "string"
                }
            ],
            "PartitionKeys": [],
            "Parameters": {
                "COLUMN_STATS_ACCURATE": "false",
                "EXTERNAL": "TRUE",
                "inputformat": "org.apache.hadoop.mapred.TextInputFormat",
                "last_modified_by": "hadoop",
                "last_modified_time": "1586454879",
                "location": "s3://amzn-s3-demo-bucket/",
                "numFiles": "1",
                "numRows": "-1",
                "outputformat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
                "rawDataSize": "-1",
                "serde.param.serialization.format": "1",
                "serde.serialization.lib": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
                "totalSize": "61"
            }
        },
        {
            "Name": "clearinghouse_data",
            "CreateTime": 1589255544.0,
            "LastAccessTime": 0.0,
            "TableType": "EXTERNAL_TABLE",
            "Columns": [
                {
                    "Name": "location",
                    "Type": "string"
                },
                {
                    "Name": "stock_count",
                    "Type": "int"
                },
                {
                    "Name": "quantity_shipped",
                    "Type": "int"
                }
            ],
            "PartitionKeys": [],
            "Parameters": {
                "EXTERNAL": "TRUE",
                "inputformat": "org.apache.hadoop.mapred.TextInputFormat",
                "location": "s3://amzn-s3-demo-bucket/",
                "outputformat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
                "serde.param.serialization.format": "1",
                "serde.serialization.lib": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
                "transient_lastDdlTime": "1589255544"
            }
        }
    ],
    "NextToken": "eyJsYXN0RXZhbHVhdGVkS2V5Ijp7IkhBU0hfS0VZIjp7InMiOiJ0Ljk0YWZjYjk1MjJjNTQ1YmU4Y2I5OWE5NTg0MjFjYTYzIn0sIlJBTkdFX0tFWSI6eyJzIjoiY2xlYXJpbmdob3VzZV9kYXRhIn19LCJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE1ODkzNDIwMjIsIm5hbm9zIjo2NTUwMDAwMDB9fQ=="
}
```

## Menjalankan pernyataan DDL dan DHTML
<a name="datastores-hive-cli-running-ddl-and-dml"></a>

Bila Anda menggunakan AWS CLI untuk menjalankan pernyataan DDL dan DHTML, Anda dapat meneruskan nama katalog metastore Hive dalam salah satu dari dua cara:
+ Langsung ke pernyataan yang mendukungnya.
+ Ke`--query-execution-context` `Catalog`parameter.

### Pernyataan DDL
<a name="datastores-hive-cli-ddl-statements"></a>

Contoh berikut melewati dalam nama katalog langsung sebagai bagian dari`show create table`Pernyataan DDL. Perintah telah diformat untuk dibaca.

```
$ aws athena start-query-execution 
 --query-string "show create table hms-catalog-1.hms_tpch_partitioned.lineitem" 
 --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
```

Contoh berikut DDL`show create table`pernyataan menggunakan`Catalog`parameter`--query-execution-context`untuk lulus nama katalog Hive metastore`hms-catalog-1`. Perintah telah diformat untuk dibaca.

```
$ aws athena start-query-execution 
 --query-string "show create table lineitem" 
 --query-execution-context "Catalog=hms-catalog-1,Database=hms_tpch_partitioned" 
 --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
```

### Pernyataan DXML
<a name="datastores-hive-cli-dml-statements"></a>

Contoh DDLL berikut`select`pernyataan melewati nama katalog ke dalam kueri secara langsung. Perintah telah diformat untuk dibaca.

```
$ aws athena start-query-execution
 --query-string "select * from hms-catalog-1.hms_tpch_partitioned.customer limit 100" 
 --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
```

Contoh DDLL berikut`select`pernyataan menggunakan`Catalog`parameter`--query-execution-context`untuk lulus dalam nama katalog Hive metastore`hms-catalog-1`. Perintah telah diformat untuk dibaca.

```
$ aws athena start-query-execution 
 --query-string "select * from customer limit 100" 
 --query-execution-context "Catalog=hms-catalog-1,Database=hms_tpch_partitioned" 
 --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
```

# Ubah konektor metastore Hive eksternal Athena
<a name="datastores-hive-reference-implementation"></a>

Jika Anda memiliki persyaratan khusus, Anda dapat memodifikasi konektor Athena untuk metastore Hive eksternal untuk Anda gunakan sendiri. Athena menyediakan implementasi referensi konektor GitHub di.com di. [https://github.com/awslabs/aws-athena-hive-metastore](https://github.com/awslabs/aws-athena-hive-metastore) Sebagian besar kasus penggunaan tidak mengharuskan Anda untuk memodifikasi implementasi referensi. Namun, jika perlu, Anda dapat memodifikasi kode sumber dan membangun artefak sendiri.

Implementasi referensi adalah[Apache Maven](https://maven.apache.org/)proyek yang memiliki modul berikut:
+ `hms-service-api`— Berisi operasi API antara fungsi Lambda dan klien layanan Athena. Operasi API ini didefinisikan dalam`HiveMetaStoreService`antarmuka. Karena ini adalah kontrak layanan, Anda tidak harus mengubah apa pun dalam modul ini.
+ `hms-lambda-handler`- Satu set default Lambda penangan yang memproses semua Hive metastore API panggilan. Kelas`MetadataHandler`adalah petugas operator untuk semua panggilan API. Anda tidak perlu mengubah paket ini.
+ `hms-lambda-func`— Contoh fungsi Lambda yang memiliki komponen-komponen berikut.
  + `HiveMetaStoreLambdaFunc`— Contoh fungsi Lambda yang meluas`MetadataHandler`.
  + `ThriftHiveMetaStoreClient`— Klien Thrift yang berkomunikasi dengan Hive metastore. Klien ini ditulis untuk Hive 2.3.0. Jika Anda menggunakan versi Hive yang berbeda, Anda mungkin perlu memperbarui kelas ini untuk memastikan bahwa objek respon yang kompatibel.
  + `ThriftHiveMetaStoreClientFactory`— Mengontrol perilaku fungsi Lambda. Sebagai contoh, Anda dapat menyediakan seperangkat penyedia handler Anda sendiri dengan mengesampingkan`getHandlerProvider()`metode.
  + `hms.properties`— Mengonfigurasi fungsi Lambda. Sebagian besar kasus memerlukan memperbarui dua properti berikut saja.
    + `hive.metastore.uris`— URI dari metastore Hive dalam format`thrift://<host_name>:9083`.
    + `hive.metastore.response.spill.location`: Lokasi Amazon S3 untuk menyimpan objek respons ketika ukurannya melebihi ambang batas tertentu (misalnya, 4 MB). Ambang batas didefinisikan dalam properti`hive.metastore.response.spill.threshold`. Mengubah nilai default tidak dianjurkan.
**catatan**  
Kedua properti ini dapat diganti oleh[Variabel lingkungan Lambda](https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html) `HMS_URIS`dan`SPILL_LOCATION`. Gunakan variabel ini bukannya mengkompilasi ulang kode sumber untuk fungsi Lambda saat Anda ingin menggunakan fungsi dengan metastore Hive atau tumpahan lokasi yang berbeda.
+ `hms-lambda-layer`- Sebuah proyek perakitan Maven yang menempatkan`hms-service-api`,`hms-lambda-handler`, dan dependensi mereka menjadi`.zip`file. Parameter`.zip`terdaftar sebagai lapisan Lambda untuk digunakan oleh beberapa fungsi Lambda.
+ `hms-lambda-rnp`— Merekam respons dari fungsi Lambda dan kemudian menggunakannya untuk memutar ulang respons. Anda dapat menggunakan model ini untuk mensimulasikan respons Lambda untuk pengujian.

## Membangun artefak sendiri
<a name="datastores-hive-reference-implementation-building-the-artifacts-yourself"></a>

Setelah memodifikasi kode sumber, Anda dapat membuat artefak sendiri dan mengunggahnya ke lokasi Amazon S3.

Sebelum Anda membangun artifact, memperbarui properti`hive.metastore.uris`dan`hive.metastore.response.spill.location`di`hms.properties`file dalam`hms-lambda-func`modul.

Untuk membangun artifact, Anda harus memiliki Apache Maven diinstal dan menjalankan perintah`mvn install`. Ini menghasilkan lapisan`.zip`file dalam folder output yang disebut`target`dalam modul`hms-lambda-layer`dan fungsi Lambda`.jar`berkas dalam modul`hms-lambd-func`.

# Kelola sumber data Anda
<a name="data-sources-managing"></a>

Anda dapat menggunakan halaman **Sumber data dan katalog** konsol Athena untuk mengelola sumber data yang Anda buat.

**Untuk melihat sumber data**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Dari daftar sumber data, pilih nama sumber data yang ingin Anda lihat.
**catatan**  
Item di kolom **nama sumber data** sesuai dengan output tindakan [ListDataCatalogs](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListDataCatalogs.html)API dan perintah [list-data-catalogs](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/list-data-catalogs.html)CLI.

**Untuk mengedit sumber data**

1. Pada halaman **Sumber data dan katalog**, lakukan salah satu hal berikut:
   + Pilih tombol di sebelah nama katalog, lalu pilih **Tindakan**, **Edit**. 
   + Pilih nama sumber data. Kemudian pada halaman detail, pilih **Tindakan**, **Edit**.

1. Pada halaman **Edit**, Anda dapat memilih fungsi Lambda yang berbeda untuk sumber data, mengubah deskripsi, atau menambahkan tag khusus. Untuk informasi selengkapnya tentang tag, lihat [Tag sumber daya Athena](tags.md).

1. Pilih **Simpan**.

1. Untuk mengedit sumber **AwsDataCatalog**data Anda, pilih **AwsDataCatalog**tautan untuk membuka halaman detailnya. Kemudian, pada halaman detail, pilih tautan ke AWS Glue konsol tempat Anda dapat mengedit katalog Anda.

**Untuk berbagi sumber data**  
Untuk informasi tentang berbagi sumber data, kunjungi tautan berikut.
+ Untuk sumber data berbasis Lambda non-HIVE, lihat. [Aktifkan kueri federasi lintas akun](xacct-fed-query-enable.md)
+ Untuk AWS Glue Data Catalog s, lihat[Konfigurasikan akses lintas akun ke katalog AWS Glue data](security-iam-cross-account-glue-catalog-access.md).

**Untuk menghapus sumber data**

1. Pada halaman **Sumber data dan katalog**, lakukan salah satu hal berikut:
   + Pilih tombol di sebelah nama katalog, lalu pilih **Tindakan**, **Hapus**. 
   + Pilih nama sumber data, lalu, pada halaman detail, pilih **Tindakan**, **Hapus**.
**catatan**  
**AwsDataCatalog**Ini adalah sumber data default di akun Anda dan tidak dapat dihapus.

   Anda diperingatkan bahwa ketika Anda menghapus sumber data, katalog data, tabel, dan tampilan yang sesuai akan dihapus dari editor kueri. Kueri tersimpan yang menggunakan sumber data tidak akan lagi berjalan di Athena.

1. **Untuk mengonfirmasi penghapusan, ketikkan nama sumber data, lalu pilih Hapus.**