Membuat tabel eksternal di Hive - Amazon DynamoDB

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

Membuat tabel eksternal di Hive

Di Tutorial: Menggunakan Amazon DynamoDB dan Apache Hive, Anda membuat tabel Hive eksternal yang dipetakan ke tabel DynamoDB. Ketika Anda mengeluarkan pernyataan HiveQL terhadap tabel eksternal, operasi baca dan tulis diteruskan ke tabel DynamoDB.

Anda dapat mempertimbangkan tabel eksternal sebagai pengarah ke sumber data yang dikelola dan disimpan di tempat lain. Dalam hal ini, sumber data yang mendasarinya adalah tabel DynamoDB. (Tabel harus sudah ada. Anda tidak dapat membuat, memperbarui, atau menghapus tabel DynamoDB dari dalam Hive.) Anda menggunakan pernyataan CREATE EXTERNAL TABLE untuk membuat tabel eksternal. Setelah itu, Anda dapat menggunakan HiveQL untuk menggunakan data di DynamoDB, seolah-olah data disimpan secara lokal di dalam Hive.

catatan

Anda dapat menggunakan pernyataan INSERT untuk memasukkan data ke dalam tabel eksternal dan pernyataan SELECT untuk memilih data dari tabel eksternal. Namun, Anda tidak dapat menggunakan pernyataan UPDATE atau DELETE untuk memanipulasi data dalam tabel tersebut.

Jika tidak membutuhkan tabel eksternal lagi, Anda dapat menghapusnya menggunakan pernyataan DROP TABLE. Dalam kasus ini, DROP TABLE hanya menghapus tabel eksternal di Hive. Tabel DynamoDB yang mendasarinya atau datanya tidak akan terpengaruh.

CREATEEXTERNALTABLEsintaks

Berikut ini menunjukkan sintaks HiveQL untuk membuat tabel Hive eksternal yang dipetakan ke tabel DynamoDB:

CREATE EXTERNAL TABLE hive_table (hive_column1_name hive_column1_datatype, hive_column2_name hive_column2_datatype...) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES ( "dynamodb.table.name" = "dynamodb_table", "dynamodb.column.mapping" = "hive_column1_name:dynamodb_attribute1_name,hive_column2_name:dynamodb_attribute2_name..." );

Baris 1 adalah awal dari pernyataan CREATE EXTERNAL TABLE, Anda menyediakan nama untuk tabel Hive (hive_table) yang ingin Anda buat.

Baris 2 menentukan kolom dan jenis data untuk hive_table. Anda perlu menentukan kolom dan jenis data yang sesuai dengan atribut di tabel DynamoDB.

Baris 3 adalah klausul STORED BY, Anda menentukan kelas yang menangani manajemen data antara Hive dan tabel DynamoDB. Untuk DynamoDB, STORED BY harus diatur ke 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'.

Baris 4 adalah awal dari klausul TBLPROPERTIES, Anda menentukan parameter berikut untuk DynamoDBStorageHandler:

  • dynamodb.table.name—nama tabel DynamoDB.

  • dynamodb.column.mapping—pasang nama kolom di tabel Hive dan atributnya yang sesuai di tabel DynamoDB. Setiap pasangan memiliki format hive_column_name:dynamodb_attribute_name, dan pasangan dipisahkan dengan koma.

Perhatikan hal-hal berikut:

  • Nama tabel Hive tidak harus sama dengan nama tabel DynamoDB.

  • Nama kolom tabel Hive tidak harus sama dengan nama kolom di tabel DynamoDB.

  • Tabel yang ditentukan oleh dynamodb.table.name harus ada di DynamoDB.

  • Untuk dynamodb.column.mapping:

    • Anda harus memetakan atribut skema kunci untuk tabel DynamoDB. Ini termasuk kunci partisi dan kunci urutan (jika ada).

    • Anda tidak harus memetakan atribut non-kunci tabel DynamoDB. Namun, Anda tidak akan melihat data apa pun dari atribut tersebut saat Anda mengkueri tabel Hive.

    • Jika jenis data dari kolom tabel Hive dan atribut DynamoDB tidak kompatibel, Anda akan melihat NULL dalam kolom tersebut saat Anda mengkueri tabel Hive.

catatan

Pernyataan CREATE EXTERNAL TABLE tidak melakukan validasi apa pun pada klausul TBLPROPERTIES. Nilai-nilai yang Anda berikan untuk dynamodb.table.name dan dynamodb.column.mapping hanya dievaluasi oleh kelas DynamoDBStorageHandler Anda mencoba mengakses tabel.

Pemetaan jenis data

Tabel berikut menunjukkan jenis data DynamoDB dan jenis data Hive yang kompatibel:

Jenis Data DynamoDB Jenis Data Hive

String

STRING

Angka

BIGINT atau DOUBLE

Biner

BINARY

Set String

ARRAY<STRING>

Set Angka

ARRAY<BIGINT> atau ARRAY<DOUBLE>

Set Biner

ARRAY<BINARY>

catatan

Jenis data DynamoDB berikut tidak didukung oleh kelas DynamoDBStorageHandler, sehingga tidak dapat digunakan dengan dynamodb.column.mapping:

  • Peta

  • Daftar

  • Boolean

  • Null

Namun, jika perlu menggunakan jenis data ini, Anda dapat membuat satu entitas yang disebut item yang mewakili seluruh item DynamoDB sebagai peta string untuk kunci dan nilai di peta. Untuk informasi selengkapnya, silakan lihat Menyalin data tanpa pemetaan kolom

Jika ingin memetakan atribut DynamoDB jenis Angka, Anda harus memilih jenis Hive yang sesuai:

  • Jenis BIGINT Hive adalah untuk angka bulat bertanda 8-byte. Itu sama dengan jenis data long di Java.

  • Jenis DOUBLE Hive adalah untuk angka floating-point presisi ganda 8-bit. Itu sama dengan jenis double di Java.

Jika Anda memiliki data numerik yang disimpan di DynamoDB yang memiliki presisi lebih tinggi dibandingkan jenis data Hive yang Anda pilih, maka mengakses data DynamoDB dapat menyebabkan hilangnya presisi.

Jika Anda mengekspor data tipe Binary dari DynamoDB ke (Amazon S3) HDFS atau, data disimpan sebagai string yang dikodekan Base64. Jika Anda mengimpor data dari Amazon S3 atau HDFS ke tipe DynamoDB Binary, Anda harus memastikan data dikodekan sebagai string Base64.