Sumber data Hive memungkinkan Anda membaca dan menulis data ke Hive. Topik ini menjelaskan cara DataWorks melakukan sinkronisasi data Hive.
Cara kerja
Hive adalah alat gudang data yang dibangun di atas Hadoop, digunakan untuk analisis statistik data log terstruktur berskala besar. Hive memetakan file data terstruktur ke tabel dan menyediakan kemampuan kueri SQL. Hive berfungsi sebagai mesin penguraian SQL yang menggunakan MapReduce untuk analisis data, HDFS untuk penyimpanan data, dan YARN untuk menjalankan program MapReduce yang dikonversi dari HiveQL (HQL).
Plugin Hive Reader mengakses layanan HiveMetastore untuk mendapatkan metadata tabel yang telah Anda konfigurasi. Anda dapat membaca data dengan salah satu cara berikut:
-
Membaca data menggunakan file HDFS
Plugin Hive Reader mengakses layanan HiveMetastore untuk mendapatkan path penyimpanan file HDFS, format file, dan delimiter untuk tabel yang telah Anda konfigurasi. Plugin tersebut kemudian membaca data langsung dari file HDFS yang mendasarinya.
-
Membaca data menggunakan koneksi Hive JDBC
Plugin Hive Reader terhubung ke layanan HiveServer2 untuk membaca data. Metode ini mendukung penyaringan data dengan klausa where dan memungkinkan Anda membaca data secara langsung menggunakan pernyataan SQL.
Plugin Hive Writer mengakses layanan HiveMetastore untuk mendapatkan informasi seperti path penyimpanan file HDFS, format file, dan delimiter untuk tabel yang telah Anda konfigurasi. Plugin ini menulis data ke file HDFS, lalu menjalankan pernyataan LOAD DATA SQL melalui klien Hive JDBC untuk memuat data dari file HDFS ke dalam tabel Hive.
Logika dasar plugin Hive Writer sama dengan plugin HDFS Writer. Anda dapat mengonfigurasi parameter HDFS Writer di dalam plugin Hive Writer, yang kemudian diteruskan ke plugin HDFS Writer.
Versi yang didukung
Batasan
-
Sumber data Hive mendukung kelompok sumber daya Serverless (disarankan) dan kelompok sumber daya eksklusif untuk Integrasi Data.
-
Hanya format TextFile, ORCFile, dan ParquetFile yang didukung untuk pembacaan.
-
Saat melakukan sinkronisasi offline ke kluster Hive, Integrasi Data membuat file sementara di server. File-file tersebut akan dihapus secara otomatis setelah tugas sinkronisasi selesai. Anda harus memantau jumlah file di direktori HDFS agar tidak mencapai batas maksimum, yang dapat menyebabkan sistem file HDFS tidak tersedia. DataWorks tidak menjamin bahwa jumlah file tetap berada di bawah batas direktori HDFS.
CatatanDi server, Anda dapat mengubah parameter dfs.namenode.fs-limits.max-directory-items untuk menentukan jumlah maksimum direktori atau file non-rekursif dalam satu direktori. Nilai default-nya adalah 1.048.576, dan nilainya dapat berkisar antara 1 hingga 6.400.000. Untuk mengatasi masalah ini, tingkatkan nilai parameter HDFS dfs.namenode.fs-limits.max-directory-items atau hapus file yang tidak diperlukan.
-
Saat mengakses sumber data Hive, otentikasi Kerberos dan
otentikasi SSLsaat ini didukung. Jika otentikasi tidak diperlukan, pilih No Authentication untuk Authentication Method saat menambahkan sumber data baru. -
Saat menggunakan DataWorks untuk mengakses sumber data Hive dengan otentikasi Kerberos, jika HiveServer2 dan metastore keduanya memiliki otentikasi Kerberos yang diaktifkan tetapi menggunakan principal yang berbeda, Anda harus menambahkan konfigurasi berikut ke kolom Parameter Ekstensi:
{ "hive.metastore.kerberos.principal": "<your metastore principal>" }
Tipe data yang didukung
Plugin Hive Reader mendukung tipe data berikut:
|
Kategori |
Tipe data Hive |
|
String |
CHAR, VARCHAR, STRING |
|
Integer |
TINYINT, SMALLINT, INT, INTEGER, BIGINT |
|
Floating-point |
FLOAT, DOUBLE, DECIMAL |
|
Tanggal dan waktu |
TIMESTAMP, DATE |
|
Boolean |
BOOLEAN |
Prasyarat
Prasyarat bervariasi berdasarkan mode konfigurasi sumber data.
Mode instans Alibaba Cloud
Jika Anda ingin menyinkronkan tabel berbasis OSS, pilih Access Identity. Anda dapat menggunakan Alibaba Cloud Account, Alibaba Cloud RAM User, atau RAM Role. Pastikan identitas yang dipilih memiliki izin OSS yang diperlukan. Jika tidak, sinkronisasi data akan gagal karena izin baca dan tulis tidak mencukupi.
Pengujian konektivitas tidak memverifikasi izin baca dan tulis data.
Mode string koneksi
Data Lake Formation (DLF)
Jika sumber data Hive Anda adalah kluster EMR yang menggunakan Data Lake Formation (DLF) untuk manajemen metadata, tambahkan konfigurasi berikut ke kolom Extension Parameters saat mengonfigurasi sumber data:
{"dlf.catalog.id" : "my_catalog_xxxx"}
Ganti my_catalog_xxxx dengan nilai parameter dlf.catalog.id dari konfigurasi EMR Hive Anda.
Ketersediaan tinggi (HA)
Jika kluster EMR Hive yang ingin Anda sinkronkan memiliki fitur high availability (HA) yang diaktifkan, Anda perlu mengaktifkan sakelar Enable High Availability Mode dan mengonfigurasi informasi terkait HA di bagian Extension Parameters dengan format berikut. Anda dapat membuka Konsol EMR, temukan kluster target, lalu klik Cluster Services di kolom Operations untuk mendapatkan nilai konfigurasi yang relevan.
{
// Kode berikut memberikan contoh konfigurasi HA.
"dfs.nameservices":"testDfs",
"dfs.ha.namenodes.testDfs":"namenode1,namenode2",
"dfs.namenode.rpc-address.testDfs.namenode1": "",
"dfs.namenode.rpc-address.testDfs.namenode2": "",
"dfs.client.failover.proxy.provider.testDfs":"org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
// (Opsional) Jika penyimpanan dasarnya adalah OSS, konfigurasikan parameter berikut di Parameter Ekstensi untuk terhubung ke layanan OSS.
"fs.oss.accessKeyId":"<yourAccessKeyId>",
"fs.oss.accessKeySecret":"<yourAccessKeySecret>",
"fs.oss.endpoint":"oss-cn-<yourRegion>-internal.aliyuncs.com"
}
Tabel eksternal OSS
Jika penyimpanan dasarnya adalah OSS, perhatikan hal berikut:
-
Atur defaultFS dengan awalan oss://. Contohnya,
oss://bucketName. -
Jika Anda menyinkronkan tabel eksternal OSS, Anda harus menambahkan konfigurasi OSS ke kolom Extension Parameters saat mengonfigurasi sumber data Hive.
{ "fs.oss.accessKeyId":"<yourAccessKeyId>", "fs.oss.accessKeySecret":"<yourAccessKeySecret>", "fs.oss.endpoint":"oss-cn-<yourRegion>-internal.aliyuncs.com" } -
Jika Anda menyinkronkan tabel eksternal OSS-HDFS, Anda harus menambahkan konfigurasi OSS-HDFS ke kolom Extension Parameters saat mengonfigurasi sumber data Hive.
{ "fs.oss.accessKeyId":"<yourAccessKeyId>", "fs.oss.accessKeySecret":"<yourAccessKeySecret>", "fs.oss.endpoint":"cn-<yourRegion>.oss-dls.aliyuncs.com" }
Mode CDH
Jika Anda ingin mengonfigurasi sumber data Hive dalam mode CDH, Anda harus mendaftarkan kluster CDH ke DataWorks.
Buat sumber data
Sebelum mengembangkan tugas sinkronisasi data, buat sumber data di DataWorks. Untuk petunjuknya, lihat Manajemen sumber data. Untuk deskripsi parameter lengkap, lihat petunjuk inline pada halaman konfigurasi.
Bagian berikut menjelaskan parameter untuk Authentication Method yang berbeda.
Otentikasi Kerberos
|
Parameter |
Deskripsi |
|
file keytab |
File .keytab yang dihasilkan saat principal layanan didaftarkan di lingkungan Kerberos. |
|
file conf |
File
|
|
principal |
Identitas, yang dapat berupa pengguna atau layanan, yang memiliki nama unik dan kunci enkripsi terkait.
|
Otentikasi SSL
|
Parameter |
Deskripsi |
|
File sertifikat Truststore |
File sertifikat Truststore (misalnya, |
|
Password Truststore |
Password yang Anda atur saat menghasilkan file sertifikat Truststore untuk otentikasi SSL. |
|
File sertifikat Keystore |
File sertifikat Keystore yang dihasilkan saat Anda mengaktifkan otentikasi SSL, seperti file |
|
Password Keystore |
Password yang Anda atur saat menghasilkan file sertifikat Keystore untuk otentikasi SSL. |
Pengembangan tugas sinkronisasi
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Sinkronisasi offline tabel tunggal
-
Untuk prosedurnya, lihat Konfigurasi tugas di Antarmuka tanpa kode dan Konfigurasi tugas di editor kode.
-
Untuk daftar lengkap parameter dan demo skrip untuk editor kode, lihat Lampiran: Demo skrip dan referensi parameter.
Sinkronisasi offline seluruh database
Untuk prosedurnya, lihat Tugas sinkronisasi offline untuk seluruh database.
Lampiran: Demo skrip dan referensi parameter
Konfigurasi tugas sinkronisasi batch menggunakan editor kode
Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai dengan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasi mode skrip. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Demo skrip Reader
Anda dapat membaca data menggunakan file HDFS atau koneksi Hive JDBC.
-
Membaca data menggunakan file HDFS
{ "type": "job", "steps": [ { "stepType": "hive", "parameter": { "partition": "pt1=a,pt2=b,pt3=c", // Informasi partisi "datasource": "hive_not_ha_****", // Nama sumber data "column": [ // Kolom yang akan dibaca "id", "pt2", "pt1" ], "readMode": "hdfs", // Mode baca "table": "part_table_1", "fileSystemUsername" : "hdfs", "hivePartitionColumn": [ { "type": "string", "value": "Nama Partisi 1" }, { "type": "string", "value": "Nama Partisi 2" } ], "successOnNoFile":true }, "name": "Reader", "category": "reader" }, { "stepType": "hive", "parameter": { }, "name": "Writer", "category": "writer" } ], "version": "2.0", "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] }, "setting": { "errorLimit": { "record": "" // Jumlah catatan error yang diizinkan }, "speed": { "concurrent": 2, // Tingkat konkurensi tugas. "throttle": true, // Mengaktifkan atau menonaktifkan pembatasan kecepatan. Jika false, parameter mbps diabaikan. "mbps":"12" // Laju transfer maksimum dalam MBps. } } } -
Membaca data menggunakan koneksi Hive JDBC
{ "type": "job", "steps": [ { "stepType": "hive", "parameter": { "querySql": "select id,name,age from part_table_1 where pt2='B'", "datasource": "hive_not_ha_****", // Nama sumber data "session": [ "mapred.task.timeout=600000" ], "column": [ // Kolom yang akan dibaca "id", "name", "age" ], "where": "", "table": "part_table_1", "readMode": "jdbc" // Mode baca }, "name": "Reader", "category": "reader" }, { "stepType": "hive", "parameter": { }, "name": "Writer", "category": "writer" } ], "version": "2.0", "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] }, "setting": { "errorLimit": { "record": "" }, "speed": { "concurrent": 2, // Tingkat konkurensi tugas. "throttle": true, // Mengaktifkan atau menonaktifkan pembatasan kecepatan. Jika false, parameter mbps diabaikan. "mbps":"12" // Laju transfer maksimum dalam MBps. } } }
Parameter Reader
|
Parameter |
Deskripsi |
Wajib |
Default |
|
datasource |
Nama sumber data yang telah Anda buat di DataWorks. |
Ya |
Tidak ada |
|
table |
Nama tabel yang ingin Anda sinkronkan. Catatan
Nama tabel bersifat case-sensitive. |
Ya |
Tidak ada |
|
readMode |
Mode baca. Nilai yang valid:
Catatan
|
Tidak |
Tidak ada |
|
partition |
Informasi partisi tabel Hive.
|
Tidak |
Tidak ada |
|
session |
Konfigurasi tingkat sesi untuk membaca data melalui koneksi Hive JDBC. Anda dapat mengatur parameter klien seperti |
Tidak |
Tidak ada |
|
column |
Kolom yang akan dibaca, misalnya
|
Ya |
Tidak ada |
|
querySql |
Saat membaca data menggunakan koneksi Hive JDBC, Anda dapat langsung mengonfigurasi parameter querySql untuk membaca data. |
Tidak |
Tidak ada |
|
where |
Saat membaca data menggunakan koneksi Hive JDBC, Anda dapat menggunakan klausa where untuk menyaring data. |
Tidak |
Tidak ada |
|
fileSystemUsername |
Pembacaan data yang menggunakan metode HDFS menggunakan pengguna yang dikonfigurasi di halaman Sumber data Hive secara default. Jika login anonim dikonfigurasi di halaman sumber data, akun |
Tidak |
Tidak ada |
|
hivePartitionColumn |
Jika Anda ingin menyinkronkan nilai field partisi ke downstream, Anda dapat beralih ke editor kode untuk mengonfigurasi parameter hivePartitionColumn. |
Tidak |
Tidak ada |
|
successOnNoFile |
Dalam mode baca HDFS, menentukan apakah tugas sinkronisasi dianggap berhasil ketika direktori kosong. |
Tidak |
Tidak ada |
Demo skrip Writer
{
"type": "job",
"steps": [
{
"stepType": "hive",
"parameter": {
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "hive",
"parameter": {
"partition": "year=a,month=b,day=c", // Konfigurasi partisi
"datasource": "hive_ha_shanghai", // Sumber data
"table": "partitiontable2", // Tabel tujuan
"column": [ // Konfigurasi kolom
"id",
"name",
"age"
],
"writeMode": "append" ,// Mode tulis
"fileSystemUsername" : "hdfs"
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"throttle":true, // Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku, yang menunjukkan bahwa tidak ada pembatasan kecepatan yang dipicu. Jika Anda mengatur throttle ke true, pembatasan kecepatan diaktifkan.
"concurrent":2, // Jumlah job konkuren.
"mbps":"12" // Laju pembatasan kecepatan
}
}
}
Parameter Writer
|
Parameter |
Deskripsi |
Wajib |
Default |
|
datasource |
Nama sumber data. Harus sesuai dengan nama sumber data yang telah Anda buat. |
Ya |
Tidak ada |
|
column |
Kolom yang akan ditulis, misalnya,
|
Ya |
Tidak ada |
|
table |
Nama tabel Hive tempat Anda ingin menulis data. Catatan
Nama tabel bersifat case-sensitive. |
Ya |
Tidak ada |
|
partition |
Informasi partisi tabel Hive.
|
Tidak |
Tidak ada |
|
writeMode |
Mode penulisan data tabel Hive. Setelah data ditulis ke file HDFS, plugin Hive Writer menjalankan perintah writeMode menentukan perilaku pemuatan data:
Catatan
writeMode adalah parameter berisiko tinggi. Perhatikan dengan cermat direktori output data dan perilaku writeMode untuk mencegah penghapusan data yang tidak disengaja. Perilaku pemuatan data memerlukan parameter hiveConfig. Verifikasi konfigurasi Anda. |
Ya |
Tidak ada |
|
hiveConfig |
Anda dapat mengonfigurasi lebih banyak parameter ekstensi Hive di hiveConfig, termasuk hiveCommand, jdbcUrl, username, dan password.
|
Ya |
Tidak ada |
|
fileSystemUsername |
Saat menulis data ke tabel Hive, pengguna yang dikonfigurasi di halaman Sumber data Hive digunakan secara default. Jika login anonim dikonfigurasi di halaman sumber data, akun admin digunakan secara default. Jika terjadi masalah izin selama tugas sinkronisasi, beralihlah ke editor kode dan konfigurasikan parameter fileSystemUsername. |
Tidak |
Tidak ada |
|
enableColumnExchange |
Jika Anda mengatur parameter ini ke True, pengubahan urutan kolom diaktifkan. Catatan
Parameter ini hanya didukung untuk format Text. |
Tidak |
Tidak ada |
|
nullFormat |
Integrasi Data menggunakan parameter nullFormat untuk menentukan nilai string mana yang dianggap sebagai null. Contohnya, jika Anda mengonfigurasi Catatan
String "null" (empat karakter n, u, l, l) berbeda dari nilai null yang sebenarnya. |
Tidak |
Tidak ada |