Menggunakan Amazon IonSerDeciri - Amazon Athena

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

Menggunakan Amazon IonSerDeciri

Topik ini berisi informasi tentangSerDeproperti untukCREATE TABLEpernyataan di Athena. Untuk informasi lebih lanjut dan contoh Amazon IonSerDepenggunaan properti, lihatSerDeciridi Amazon Ion HiveSerDedokumentasi padaGitHub.

Menentukan Amazon IonSerDeciri

Untuk menentukan properti untuk Amazon Ion HiveSerDedi dalam kamuCREATE TABLEpernyataan, gunakanWITH SERDEPROPERTIESklausa. KarenaWITH SERDEPROPERTIESadalah subfield dariROW FORMAT SERDEklausa, Anda harus menentukanROW FORMAT SERDEdan Amazon Ion HiveSerDepath kelas pertama, sebagai sintaks berikut menunjukkan.

... ROW FORMAT SERDE 'com.amazon.ionhiveserde.IonHiveSerDe' WITH SERDEPROPERTIES ( 'property' = 'value', 'property' = 'value', ... )

Perhatikan bahwa meskipunROW FORMAT SERDEklausa diperlukan jika Anda ingin menggunakanWITH SERDEPROPERTIES, Anda dapat menggunakanSTORED AS IONatau semakin lamaINPUTFORMATdanOUTPUTFORMATsintaks untuk menentukan format Amazon Ion.

Ion AmazonSerDeciri

Berikut ini adalah Amazon IonSerDesifat yang dapat digunakan dalamCREATE TABLEpernyataan di Athena.

ion.pengkodean

Opsional

Default: BINARY

Nilai-nilai:BINARY,TEXT

Properti ini menyatakan apakah nilai-nilai baru ditambahkan serial sebagaiBiner Amazon Ionatau format teks Amazon Ion.

Berikut iniSerDecontoh properti menentukan format teks Amazon Ion.

'ion.encoding' = 'TEXT'
ion.fail_on_overflow

Opsional

Default: true

Nilai-nilai:true,false

Amazon Ion memungkinkan untuk jenis numerik besar sewenang-wenang sementara Hive tidak. Secara default,SerDegagal jika nilai Amazon Ion tidak sesuai dengan kolom Hive, tetapi Anda dapat menggunakanfail_on_overflowopsi konfigurasi untuk membiarkan nilai meluap bukannya gagal.

Properti ini dapat diatur baik pada tingkat tabel atau kolom. Untuk menentukannya di tingkat tabel, tentukanion.fail_on_overflowseperti pada contoh berikut. Ini menetapkan perilaku default untuk semua kolom.

'ion.fail_on_overflow' = 'true'

Untuk mengontrol kolom tertentu, tentukan nama kolom antaraiondanfail_on_overflow, dibatasi oleh periode, seperti pada contoh berikut.

'ion.<column>.fail_on_overflow' = 'false'
ion.path_extractor.case_sensitive

Opsional

Default: false

Nilai-nilai:true,false

Menentukan apakah akan memperlakukan nama bidang Amazon Ion sebagai peka huruf besar. Kapanfalse, yangSerDemengabaikan kasus parsing nama bidang Amazon Ion.

Sebagai contoh, misalkan Anda memiliki skema tabel Hive yang mendefinisikan bidangaliasdalam huruf kecil dan dokumen Amazon Ion dengan keduanyaaliasbidang danALIASlapangan, seperti pada contoh berikut.

-- Hive Table Schema alias: STRING -- Amazon Ion Document { 'ALIAS': 'value1'} { 'alias': 'value2'}

Contoh berikut menunjukkanSerDeproperti dan tabel diekstraksi yang dihasilkan ketika sensitivitas kasus diatur kefalse:

-- Serde properties 'ion.alias.path_extractor' = '(alias)' 'ion.path_extractor.case_sensitive' = 'false' --Extracted Table | alias | |----------| | "value1" | | "value2" |

Contoh berikut menunjukkanSerDeproperti dan tabel diekstraksi yang dihasilkan ketika sensitivitas kasus diatur ketrue:

-- Serde properties 'ion.alias.path_extractor' = '(alias)' 'ion.path_extractor.case_sensitive' = 'true' --Extracted Table | alias | |----------| | "value2" |

Dalam kasus kedua,value1untukALIASbidang diabaikan ketika sensitivitas kasus diatur ketruedan ekstraktor jalur ditentukan sebagaialias.

ion.<column>.path_extractor

Opsional

Bawaan: NA

Nilai: String dengan jalur pencarian

Menciptakan extractor jalan dengan jalur pencarian yang ditentukan untuk kolom yang diberikan. Ekstraktor jalur memetakan bidang Amazon Ion ke kolom Hive. Jika tidak ada ekstraktor jalur yang ditentukan, Athena secara dinamis membuat ekstraktor jalur pada waktu berjalan berdasarkan nama kolom.

Contoh jalur extractor berikut memetakanexample_ion_fieldkepadaexample_hive_column.

'ion.example_hive_column.path_extractor' = '(example_ion_field)'

Untuk informasi selengkapnya tentang ekstraktor jalur dan jalur pencarian, lihatMenggunakan ekstraktor jalur.

ion.timestamp.serialization_offset

Opsional

Default: 'Z'

Nilai-nilai:OFFSET, dimanaOFFSET direpresentasikan sebagai<signal>hh:mm. Contoh nilai:01:00,+01:00,-09:30,Z(UTC, sama seperti 00:00)

Tidak seperti Apache Hivecap waktu, yang tidak memiliki zona waktu bawaan dan disimpan sebagai offset dari zaman UNIX, stempel waktu Amazon Ion memang memiliki offset. Gunakan properti ini untuk menentukan offset saat Anda membuat serial ke Amazon Ion.

Contoh berikut menambahkan offset satu jam.

'ion.timestamp.serialization_offset' = '+01:00'
ion.serialize_null

Opsional

Default: OMIT

Nilai-nilai:OMIT,UNTYPED,TYPED

Ion AmazonSerDedapat dikonfigurasi untuk baik serialize atau menghilangkan kolom yang memiliki nilai null. Anda dapat memilih untuk menulis nulls diketik kuat (TYPED) atau nulls tidak diketik (UNTYPED). Null yang diketik dengan kuat ditentukan berdasarkan pemetaan tipe Amazon Ion to Hive default.

Contoh berikut menentukan nulls sangat diketik.

'ion.serialize_null'='TYPED'
ion.ignore_cacat

Opsional

Default: false

Nilai-nilai:true,false

Kapantrue, mengabaikan entri cacat atau seluruh file jikaSerDetidak dapat membacanya. Untuk informasi lebih lanjut, lihatAbaikan cacatdalam dokumentasiGitHub.

ion.<column>.serialize_as

Opsional

Default: Tipe default untuk kolom.

Nilai: String yang berisi tipe Amazon Ion

Menentukan tipe data Amazon Ion di mana nilai diserialkan. Karena jenis Amazon Ion dan Hive tidak selalu memiliki pemetaan langsung, beberapa jenis Hive memiliki beberapa tipe data yang valid untuk serialisasi. Untuk membuat serial data sebagai tipe data non-default, gunakan properti ini. Untuk informasi selengkapnya tentang pemetaan tipe, lihat Amazon IonJenis pemetaanhalaman padaGitHub.

Secara default, kolom Hive biner diserialkan sebagai gumpalan Amazon Ion, tetapi mereka juga dapat diserialkan sebagaiAmazon Ion gumpalan(karakter objek besar). Contoh berikut serializes kolomexample_hive_binary_columnsebagai gumpalan.

'ion.example_hive_binary_column.serialize_as' = 'clob'