Sumber data Hive menyediakan saluran dua arah untuk membaca dan menulis data ke Hive. Topik ini menjelaskan kemampuan sinkronisasi data yang didukung DataWorks untuk Hive.
Fitur
Apache Hive adalah alat gudang data yang dibangun di atas Hadoop untuk analisis statistik log terstruktur dalam jumlah besar. Hive memetakan file data terstruktur ke tabel dan menyediakan kemampuan kueri SQL. Sebagai mesin pengurai SQL, Hive menggunakan MapReduce untuk analisis data, menyimpan data yang telah diproses di Hadoop Distributed File System (HDFS), mengonversi HiveQL menjadi program MapReduce, lalu menjalankannya di Yet Another Resource Negotiator (YARN).
Plugin Hive Reader mengakses layanan Hive Metastore untuk mendapatkan metadata dari tabel data yang Anda konfigurasikan. Anda dapat membaca data dengan dua cara: melalui file HDFS atau menggunakan Hive Java Database Connectivity (JDBC).
Baca data menggunakan file HDFS
Plugin Hive Reader mengakses layanan Hive Metastore untuk mengurai informasi tentang tabel data yang Anda konfigurasikan, seperti jalur penyimpanan file HDFS, format file, dan pemisah. Plugin tersebut kemudian membaca data tabel dari Hive dengan membaca file HDFS.
Baca data menggunakan Hive JDBC
Plugin Hive Reader terhubung ke layanan HiveServer2 melalui klien Hive JDBC untuk membaca data. Plugin ini mendukung penyaringan data menggunakan klausa where dan memungkinkan Anda membaca data secara langsung menggunakan Pernyataan SQL.
Plugin Hive Writer mengakses layanan Hive Metastore untuk mengurai informasi tentang tabel data yang Anda konfigurasikan, seperti jalur penyimpanan file HDFS, format file, dan pemisah. Plugin tersebut 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 terkait HDFS Writer di plugin Hive Writer, yang kemudian akan diteruskan ke plugin HDFS Writer.
Versi yang didukung
Batasan
Sumber data Hive mendukung kelompok sumber daya arsitektur tanpa server (disarankan) dan kelompok sumber daya eksklusif untuk Data Integration.
Anda hanya dapat membaca file dalam format TextFile, ORCFile, atau ParquetFile.
Saat menggunakan Data Integration untuk melakukan sinkronisasi offline ke kluster Hive, file sementara akan dihasilkan di server. File-file tersebut akan dihapus secara otomatis setelah tugas sinkronisasi selesai. Untuk mencegah sistem file menjadi tidak tersedia, pantau batas jumlah file di direktori HDFS server. DataWorks tidak menjamin bahwa jumlah file tetap berada dalam batas direktori HDFS.
CatatanDi server, Anda dapat memodifikasi parameter dfs.namenode.fs-limits.max-directory-items untuk menentukan jumlah maksimum direktori atau file yang dapat dimuat dalam satu direktori. Nilai default-nya adalah 1.048.576, dan nilainya dapat berkisar antara 1 hingga 6.400.000. Untuk mencegah masalah ini, Anda dapat meningkatkan nilai parameter HDFS dfs.namenode.fs-limits.max-directory-items atau menghapus file yang tidak diperlukan.
Anda dapat menggunakan otentikasi identitas Kerberos atau otentikasi
SSLuntuk mengakses sumber data Hive. Jika otentikasi identitas tidak diperlukan, pilih No Authentication untuk opsi Authentication Options saat menambahkan sumber data.Saat menggunakan otentikasi Kerberos untuk mengakses sumber data Hive di DataWorks, jika HiveServer2 dan metastore keduanya telah mengaktifkan otentikasi Kerberos tetapi menggunakan principal yang berbeda, Anda harus menambahkan konfigurasi berikut ke parameter ekstensi:
{ "hive.metastore.kerberos.principal": "<your metastore principal>" }
Tipe bidang yang didukung
Tabel berikut mencantumkan tipe bidang yang didukung oleh sumber data Hive untuk pembacaan offline.
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 |
Persiapan
Persiapan yang diperlukan bervariasi berdasarkan mode konfigurasi sumber data.
Mode instans Alibaba Cloud
Jika Anda ingin menyinkronkan tabel OSS dalam instans ini, pilih Access Identity yang sesuai. Identitas akses yang didukung adalah Alibaba Cloud Account, RAM User, dan RAM Role. Pastikan identitas akses yang dipilih memiliki izin OSS yang diperlukan. Jika tidak, sinkronisasi data akan gagal karena izin baca dan tulis yang tidak mencukupi.
Pengujian konektivitas tidak memverifikasi izin baca dan tulis data.
Mode string koneksi
Konfigurasi DLF
Jika sumber data Hive Anda berasal dari EMR dan menggunakan DLF untuk manajemen metadata, Anda harus menambahkan konten berikut ke kolom Extension Parameters:
{"dlf.catalog.id" : "my_catalog_xxxx"}Dalam kode tersebut, my_catalog_xxxx adalah nama yang sesuai dengan parameter dlf.catalog.id dalam konfigurasi EMR Hive Anda.
Konfigurasi ketersediaan tinggi (HA)
Jika kluster EMR Hive yang ingin Anda sinkronkan telah mengaktifkan High Availability, Anda harus mengaktifkan High-availability Mode dan mengonfigurasi informasi HA terkait di bagian Extended Parameters dengan format berikut. Anda dapat membuka Konsol EMR, temukan kluster target, lalu klik Cluster Services di kolom Actions untuk mendapatkan nilai konfigurasi terkait.
{
// 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, Anda harus mengonfigurasi 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"
}Konfigurasi tabel eksternal OSS
Jika penyimpanan dasarnya adalah OSS, perhatikan hal berikut:
Konfigurasi defaultFS harus diawali dengan oss://, misalnya,
oss://bucketName.Jika tabel yang ingin Anda sinkronkan adalah tabel eksternal OSS, Anda harus memasukkan informasi terkait OSS di 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 tabel yang akan disinkronkan adalah tabel eksternal OSS-HDFS, Anda harus mengonfigurasi informasi OSS-HDFS terkait di 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
Untuk menggunakan mode CDH dalam mengonfigurasi sumber data Hive, Anda harus mendaftarkan kluster CDH ke DataWorks.
Buat sumber data
Saat mengembangkan tugas sinkronisasi data, Anda harus membuat sumber data yang sesuai di DataWorks. Untuk informasi lebih lanjut tentang prosedurnya, lihat Manajemen sumber data. Untuk penjelasan detail mengenai parameter konfigurasi, lihat petunjuk teks untuk setiap parameter di halaman konfigurasi.
Berikut ini menjelaskan parameter untuk opsi Authentication Options yang berbeda:
Otentikasi Kerberos
Parameter | Deskripsi |
file keytab | File .keytab yang dihasilkan saat principal layanan didaftarkan di lingkungan Kerberos. |
file conf | File
|
principal | Entitas identitas, yang bisa berupa pengguna atau layanan. Entitas ini memiliki nama unik dan kunci enkripsi terkait.
|
Otentikasi SSL
Parameter | Deskripsi |
File sertifikat Truststore | File sertifikat Truststore yang dihasilkan saat otentikasi SSL diaktifkan, seperti file |
Kata sandi Truststore | Kata sandi yang ditetapkan untuk file sertifikat Truststore saat otentikasi SSL diaktifkan. |
File sertifikat Keystore | File sertifikat Keystore yang dihasilkan saat otentikasi SSL diaktifkan, seperti file |
Kata sandi Keystore | Kata sandi yang ditetapkan untuk file sertifikat Keystore saat otentikasi SSL diaktifkan. |
Kembangkan tugas sinkronisasi data
Untuk informasi mengenai titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Konfigurasi tugas sinkronisasi offline untuk satu tabel
Untuk informasi lebih lanjut mengenai prosedurnya, lihat Konfigurasi tugas di Antarmuka tanpa kode dan Konfigurasi tugas di editor kode.
Untuk semua parameter dan demo skrip editor kode, lihat Lampiran: Demo skrip dan parameter.
Konfigurasi tugas sinkronisasi baca offline untuk seluruh basis data
Untuk informasi lebih lanjut mengenai prosedurnya, lihat Tugas sinkronisasi offline untuk seluruh basis data.
Lampiran: Demo skrip dan 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 berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasi tugas di editor kode. 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 Hive JDBC:
Baca 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 kesalahan }, "speed": { "concurrent": 2, // Konkurensi pekerjaan "throttle": true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, artinya lalu lintas tidak dikendalikan. Jika throttle diatur ke true, lalu lintas dikendalikan. "mbps":"12"// Pengendalian aliran } } }Baca data menggunakan 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, // Konkurensi pekerjaan "throttle": true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, artinya lalu lintas tidak dikendalikan. Jika throttle diatur ke true, lalu lintas dikendalikan. "mbps":"12"// Pengendalian aliran } } }
Parameter skrip Reader
Parameter | Deskripsi | Wajib | Nilai default |
datasource | Nama sumber data. Nama harus sama dengan yang telah Anda tambahkan. | Ya | Tidak ada |
table | Nama tabel yang akan disinkronkan. Catatan Ini bersifat case-sensitive. | Ya | Tidak ada |
readMode | Mode baca:
Catatan
| Tidak | Tidak ada |
partition | Informasi partisi tabel Hive:
| Tidak | Tidak ada |
session | Konfigurasi tingkat sesi untuk pembacaan Hive JDBC. Anda dapat mengatur parameter klien. Misalnya, SET hive.exec.parallel=true | Tidak | Tidak ada |
column | Kolom yang akan dibaca. Misalnya,
| Ya | Tidak ada |
querySql | Saat Anda membaca data menggunakan Hive JDBC, Anda dapat langsung mengonfigurasi parameter querySql untuk membaca data. | Tidak | Tidak ada |
where | Saat Anda membaca data menggunakan Hive JDBC, Anda dapat mengatur parameter where untuk menyaring data. | Tidak | Tidak ada |
fileSystemUsername | Saat Anda membaca data menggunakan HDFS, 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, Anda harus beralih ke editor kode dan mengonfigurasi parameter fileSystemUsername. | Tidak | Tidak ada |
hivePartitionColumn | Jika Anda ingin menyinkronkan nilai bidang partisi ke tujuan hilir, Anda dapat beralih ke editor kode dan mengonfigurasi parameter hivePartitionColumn. | Tidak | Tidak ada |
successOnNoFile | Saat Anda membaca data dalam mode HDFS, parameter ini menentukan apakah tugas sinkronisasi berjalan normal jika 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 throttle diatur ke false, parameter mbps tidak berlaku, artinya lalu lintas tidak dikendalikan. Jika throttle diatur ke true, lalu lintas dikendalikan.
"concurrent":2, // Konkurensi pekerjaan.
"mbps":"12"// Pengendalian aliran
}
}
}Parameter skrip Writer
Parameter | Deskripsi | Wajib | Nilai default |
datasource | Nama sumber data. Nama harus sama dengan yang telah Anda tambahkan. | Ya | Tidak ada |
column | Kolom yang akan ditulis. Misalnya,
| Ya | Tidak ada |
table | Nama tabel Hive yang akan ditulis. Catatan Ini bersifat case-sensitive. | Ya | Tidak ada |
partition | Informasi partisi tabel Hive:
| Tidak | Tidak ada |
writeMode | Mode untuk menulis data ke tabel Hive. Setelah data ditulis ke file HDFS, plugin Hive Writer menjalankan Parameter writeMode menentukan perilaku pemuatan data:
Catatan Parameter writeMode adalah parameter berisiko tinggi. Perhatikan direktori penulisan dan perilaku parameter writeMode untuk mencegah penghapusan data secara tidak sengaja. Perilaku pemuatan data harus digunakan bersama parameter hiveConfig. Perhatikan konfigurasi Anda. | Ya | Tidak ada |
hiveConfig | Anda dapat mengonfigurasi parameter ekstensi Hive lanjutan di hiveConfig, termasuk hiveCommand, jdbcUrl, username, dan password:
| Ya | Tidak ada |
fileSystemUsername | Saat Anda 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, Anda harus beralih ke editor kode dan mengonfigurasi parameter fileSystemUsername. | Tidak | Tidak ada |
enableColumnExchange | Jika parameter ini diatur ke True, pengubahan urutan kolom diaktifkan. Catatan Hanya format Text yang didukung. | Tidak | Tidak ada |
nullFormat | Data Integration menyediakan parameter nullFormat untuk menentukan string mana yang dapat diinterpretasikan sebagai null. Misalnya, jika Anda mengonfigurasi Catatan String "null" (empat karakter n, u, l, l) berbeda dari nilai null yang sebenarnya. | Tidak | Tidak ada |