

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

# Membuat tabel Amazon S3
<a name="s3-tables-create"></a>

Tabel Amazon S3 adalah subsumber daya dari ember meja. Tabel disimpan dalam Apache Iceberg format sehingga Anda dapat bekerja dengannya dengan menggunakan mesin kueri dan aplikasi lain yang mendukungApache Iceberg. Amazon S3 terus mengoptimalkan tabel Anda untuk membantu mengurangi biaya penyimpanan dan meningkatkan kinerja kueri analitik.

Saat Anda membuat tabel, Amazon S3 secara otomatis menghasilkan *lokasi gudang* untuk tabel. Lokasi gudang adalah lokasi S3 unik di mana Anda dapat membaca dan menulis objek yang terkait dengan tabel. Contoh berikut menunjukkan format lokasi gudang:

```
s3://63a8e430-6e0b-46f5-k833abtwr6s8tmtsycedn8s4yc3xhuse1b--table-s3
```

Tabel memiliki format Amazon Resource Name (ARN) berikut:

```
arn:aws:s3tables:{{region}}:{{owner-account-id}}:bucket/{{bucket-name}}/table/{{table-id}}
```

Secara default, Anda dapat membuat hingga 10.000 tabel dalam ember meja. Untuk meminta peningkatan kuota untuk bucket atau tabel tabel, hubungi. [Dukungan](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)

Anda dapat membuat tabel menggunakan konsol Amazon S3, Amazon S3 REST API,,AWS CLI() AWS SDKs AWS Command Line Interface , atau mesin kueri yang terhubung ke bucket tabel Anda.

Saat Anda membuat tabel, Anda dapat menentukan pengaturan enkripsi untuk tabel tersebut, kecuali jika Anda membuat tabel dengan Athena. Jika Anda tidak menentukan pengaturan enkripsi, tabel dienkripsi dengan pengaturan default untuk keranjang tabel. Untuk informasi selengkapnya, lihat [Menentukan enkripsi untuk tabel](s3-tables-kms-specify.md#specify-kms-table).

**Prasyarat untuk membuat tabel**

Untuk membuat tabel, Anda harus terlebih dahulu melakukan hal berikut: 
+ [Buat ember meja](s3-tables-buckets-create.md).
+ [Buat namespace](s3-tables-namespace-create.md)di ember meja Anda.
+ Pastikan Anda memiliki izin AWS Identity and Access Management (IAM) untuk `s3tables:CreateTable` dan. `s3tables:PutTableData`
+ 
**catatan**  
Jika Anda menggunakan enkripsi SSE-KMS untuk tabel Anda, Anda memerlukan izin untuk`s3tables:PutTableEncryption`, dan `DescribeKey` izin pada kunci yang dipilih. AWS KMS Selain itu AWS KMS kunci yang Anda gunakan perlu memberikan izin Tabel S3 untuk melakukan pemeliharaan tabel otomatis. Untuk informasi selengkapnya, lihat [Persyaratan izin untuk enkripsi SSE-KMS Tabel S3](s3-tables-kms-permissions.md)

Untuk informasi tentang nama tabel yang valid, lihat[Aturan penamaan untuk tabel dan ruang nama](s3-tables-buckets-naming.md#naming-rules-table).

**penting**  
Saat membuat tabel, pastikan Anda menggunakan semua huruf kecil dalam nama tabel dan definisi tabel Anda. Misalnya, pastikan bahwa nama kolom Anda semua huruf kecil. Jika nama tabel atau definisi tabel berisi huruf kapital, tabel tidak didukung oleh AWS Lake Formation atau definisi tabel AWS Glue Data Catalog. Dalam hal ini, tabel Anda tidak akan terlihat oleh layanan AWS analitik seperti Amazon Athena, meskipun bucket tabel Anda terintegrasi dengan AWS layanan analitik.   
Jika definisi tabel berisi huruf kapital, Anda menerima pesan galat berikut saat menjalankan `SELECT` kueri di Athena: “GENERIC\_INTERNAL\_ERROR: Get table request failed: com.amazonaws.services.glue.model. ValidationException: Sumber Daya Federasi Tidak Didukung - Nama tabel atau kolom tidak valid.

## Menggunakan konsol S3 dan Amazon Athena
<a name="create-table-console"></a>

Prosedur berikut menggunakan konsol Amazon S3 untuk membuat tabel dengan Amazon Athena. Jika Anda belum membuat namespace di bucket tabel Anda, Anda dapat melakukannya sebagai bagian dari proses ini. Sebelum melakukan langkah-langkah berikut, pastikan Anda telah mengintegrasikan bucket tabel Anda dengan layanan AWS analitik di Wilayah ini. Untuk informasi selengkapnya, lihat [Mengintegrasikan Tabel AWS Amazon S3 dengan layanan analitik](s3-tables-integrating-aws.md).

**catatan**  
Saat Anda membuat tabel menggunakan Athena, tabel tersebut mewarisi pengaturan enkripsi default dari keranjang tabel. Jika Anda ingin menggunakan jenis enkripsi yang berbeda, Anda perlu membuat tabel menggunakan metode lain.

**Untuk membuat tabel**

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

1. Di panel navigasi kiri, pilih **Bucket tabel**.

1. Pada halaman **bucket Table**, pilih bucket tempat Anda ingin membuat tabel.

1. Pada halaman detail bucket, pilih **Buat tabel dengan Athena**. 

1. Dalam **Buat tabel dengan Athena** kotak dialog, lakukan salah satu hal berikut:
   + Buat namespace baru. Pilih **Buat namespace**, lalu masukkan nama di bidang Nama **Namespace**. Nama namespace harus 1 hingga 255 karakter dan unik di dalam keranjang tabel. Karakter yang valid adalah a—z, 0-9, dan garis bawah (). `_` Garis bawah tidak diizinkan pada awal nama namespace. 
   + Pilih **Buat namespace**.
   + Tentukan namespace yang ada. Pilih **Tentukan namespace yang ada dalam keranjang tabel ini**. Kemudian pilih **Pilih dari ruang nama yang ada atau Masukkan nama namespace** **yang ada**. Jika Anda memiliki lebih dari 1.000 ruang nama di bucket, Anda harus memasukkan nama namespace jika tidak muncul dalam daftar. 

1. Pilih **Buat tabel dengan Athena**.

1. Konsol Amazon Athena terbuka dan editor kueri Athena muncul. **Bidang **Catalog** harus diisi dengan **s3tablescatalog/** diikuti dengan nama bucket tabel Anda, misalnya, s3tablescatalog/. {{amzn-s3-demo-bucket}}** Bidang **Database** harus diisi dengan namespace yang Anda buat atau pilih sebelumnya. 
**catatan**  
Jika Anda tidak melihat nilai ini di bidang **Katalog** dan **Database**, pastikan Anda telah mengintegrasikan bucket tabel Anda dengan layanan AWS analitik di Wilayah ini. Untuk informasi selengkapnya, lihat [Mengintegrasikan Tabel AWS Amazon S3 dengan layanan analitik](s3-tables-integrating-aws.md). 

1. Editor kueri diisi dengan kueri sampel yang dapat Anda gunakan untuk membuat tabel. Ubah kueri untuk menentukan nama tabel dan kolom yang Anda ingin tabel Anda miliki. 

1. Setelah selesai memodifikasi kueri, pilih **Jalankan** untuk membuat tabel Anda. 
**catatan**  
Jika Anda menerima kesalahan “Izin tidak cukup untuk menjalankan kueri. Principal tidak memiliki hak istimewa pada sumber daya tertentu “ketika Anda mencoba menjalankan kueri di Athena, Anda harus diberikan izin Formasi Danau yang diperlukan di atas meja. Untuk informasi selengkapnya, lihat [Memberikan izin Lake Formation di atas meja atau database](grant-permissions-tables.md#grant-lf-table). 
Jika Anda menerima kesalahan “Gunung es tidak dapat mengakses sumber daya yang diminta” ketika Anda mencoba menjalankan kueri di Athena, buka AWS Lake Formation konsol dan pastikan bahwa Anda telah memberikan izin pada katalog keranjang tabel dan database (namespace) yang Anda buat. Jangan tentukan tabel saat memberikan izin ini. Untuk informasi selengkapnya, lihat [Memberikan izin Lake Formation di atas meja atau database](grant-permissions-tables.md#grant-lf-table). 
Jika Anda menerima pesan galat berikut saat menjalankan `SELECT` kueri di Athena, pesan ini disebabkan oleh adanya huruf kapital di nama tabel atau nama kolom Anda dalam definisi tabel Anda: “GENERIC\_INTERNAL\_ERROR: Get table request failed: com.amazonaws.services.glue.model. ValidationException: Sumber Daya Federasi Tidak Didukung - Nama tabel atau kolom tidak valid. Pastikan bahwa nama tabel dan kolom Anda semuanya huruf kecil. 

Jika pembuatan tabel Anda berhasil, nama tabel baru Anda muncul di daftar tabel di Athena. Saat Anda menavigasi kembali ke konsol Amazon S3, tabel baru akan muncul di daftar **Tabel** di halaman detail bucket untuk bucket tabel setelah Anda menyegarkan daftar. 

## Menggunakan AWS CLI
<a name="create-table-CLI"></a>

Contoh ini menunjukkan cara membuat tabel dengan skema dengan menggunakan AWS CLI dan menentukan metadata tabel dengan. JSON Untuk menggunakan contoh ini, ganti `{{user input placeholders}}`dengan informasi Anda sendiri.

```
aws s3tables create-table --cli-input-json file://{{mytabledefinition.json}}
```

Untuk `mytabledefinition.json` file, gunakan definisi tabel contoh berikut. Untuk menggunakan contoh ini, ganti `{{user input placeholders}}`dengan informasi Anda sendiri. 

```
{
    "tableBucketARN": "arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/{{amzn-s3-demo-table-bucket}}",
    "namespace": "{{your_namespace}}",
    "name": "{{example_table}}",
    "format": "ICEBERG",
    "metadata": {
        "iceberg": {
            "schema": {
                "fields": [
                     {"name": "{{id}}", "type": "{{int}}",{{"required": true}}},
                     {"name": "{{name}}", "type": "{{string}}"},
                     {"name": "{{value}}", "type": "{{int}}"}
                ]
            }
        }
    }
}
```

## Menggunakan mesin kueri
<a name="create-table-engine"></a>

Anda dapat membuat tabel di mesin kueri yang didukung yang terhubung ke bucket tabel Anda, seperti dalam Apache Spark sesi di Amazon EMR.

Contoh berikut menunjukkan cara membuat tabel Spark dengan menggunakan `CREATE` pernyataan, dan menambahkan data tabel dengan menggunakan `INSERT` pernyataan atau dengan membaca data dari file yang ada. Untuk menggunakan contoh ini, ganti `{{user input placeholders}}`dengan informasi Anda sendiri.

```
spark.sql( 
" CREATE TABLE IF NOT EXISTS s3tablesbucket.{{example_namespace}}.`{{example_table}}` ( 
    id INT, 
    name STRING, 
    value INT 
) 
USING iceberg "
)
```

Setelah Anda membuat tabel, Anda dapat memuat data ke dalam tabel. Pilih dari metode berikut:
+ Tambahkan data ke dalam tabel dengan menggunakan `INSERT` pernyataan.

  ```
  spark.sql(
  """
      INSERT INTO s3tablesbucket.{{my_namespace}}.{{my_table}} 
      VALUES 
          (1, 'ABC', 100), 
          (2, 'XYZ', 200)
  """)
  ```
+ Muat file data yang ada.

  1. Baca data ke Spark:

     ```
     val data_file_location = "{{Path such as S3 URI to data file}}"
     val data_file = spark.read.parquet({{data_file_location}})
     ```

  1. Tulis data ke dalam tabel Gunung Es:

     ```
     data_file.writeTo("s3tablesbucket.{{my_namespace}}.{{my_table}}").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()
     ```