Apa yang dimaksud dengan Apache Hive dan HiveQL pada Azure HDInsight?

Apache Hive adalah sistem gudang data untuk Apache Hadoop. Apache Hive memungkinkan peringkasan data, pembuatan kueri, dan analisis data. Kueri Apache Hive ditulis dalam HiveQL, yang merupakan bahasa kueri yang mirip dengan SQL.

Apache Hive memungkinkan Anda untuk memproyeksikan struktur pada data yang sebagian besar tidak terstruktur. Setelah menentukan struktur, Anda dapat menggunakan HiveQL untuk membuat kueri data tanpa pengetahuan tentang Java atau MapReduce.

HDInsight menyediakan beberapa jenis kluster, yang disetel untuk beban kerja tertentu. Jenis kluster berikut ini paling sering digunakan untuk kueri Apache Hive:

Jenis kluster Deskripsi
Interactive Query Kluster Hadoop yang menyediakan fungsionalitas Low Latency Analytical Processing (LLAP) untuk meningkatkan waktu respons untuk kueri interaktif. Untuk informasi selengkapnya, lihat dokumen Memulai dengan Interactive Query di HDInsight.
Hadoop Kluster Hadoop yang disetel untuk beban kerja pemrosesan batch. Untuk informasi selengkapnya, lihat dokumen Memulai dengan Apache Hadoop di HDInsight.
Spark Apache Spark memiliki fungsionalitas bawaan untuk bekerja dengan Apache Hive. Untuk informasi selengkapnya, lihat dokumen Memulai dengan Apache Spark di HDInsight.
HBase HiveQL dapat digunakan untuk mengkueri data yang disimpan di Apache HBase. Untuk informasi selengkapnya, lihat dokumen Memulai dengan Apache HBase di HDInsight.

Cara menggunakan Apache Hive

Gunakan tabel berikut untuk menemukan berbagai cara untuk menggunakan Apache Hive dengan HDInsight:

Gunakan metode ini jika Anda mau... ...kueri interaktif ...pemrosesan batch ... dari sistem operasi klien ini
Alat HDInsight untuk Visual Studio Code Linux, Unix, macOS X, atau Windows
Alat HDInsight untuk Visual Studio Code Jendela
Tampilan Apache Hive Apa saja (berbasis browser)
Klien beeline Linux, Unix, macOS X, atau Windows
REST API   Linux, Unix, macOS X, atau Windows
Windows PowerShell   Jendela

Referensi bahasa HiveQL

Referensi bahasa HiveQL tersedia dalam manual bahasa.

Apache Hive dan struktur data

Apache Hive memahami cara bekerja dengan data terstruktur dan semi terstruktur. Misalnya, file teks yang bidangnya dibatasi oleh karakter tertentu. Pernyataan HiveQL berikut membuat tabel di atas data yang dibatasi ruang:

CREATE EXTERNAL TABLE log4jLogs (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE LOCATION '/example/data/';

Apache Hive juga mendukung serializer/deserializer kustom (SerDe) untuk data yang kompleks atau terstruktur secara tidak teratur. Untuk informasi selengkapnya, lihat dokumen Cara menggunakan JSON SerDe kustom dengan dokumen HDInsight.

Untuk informasi selengkapnya tentang format file yang didukung oleh Apache Hive, lihat manual Bahasa (https://cwiki.apache.org/confluence/display/Hive/LanguageManual)

Tabel internal vs tabel eksternal Apache Hive

Ada dua jenis tabel yang bisa Anda buat dengan Apache Hive:

  • Internal: Data disimpan di gudang data Apache Hive. Gudang data terletak di /hive/warehouse/ pada penyimpanan default untuk kluster.

    Gunakan tabel internal saat salah satu kondisi berikut berlaku:

    • Data bersifat sementara.
    • Anda ingin Apache Hive mengelola siklus hidup tabel dan data.
  • Eksternal: Data disimpan di luar gudang data. Data dapat disimpan di penyimpanan apa pun yang dapat diakses oleh kluster.

    Gunakan tabel eksternal saat salah satu kondisi berikut berlaku:

    • Data ini juga digunakan di luar Apache Hive. Misalnya, file data diperbarui oleh proses lain (yang tidak mengunci file.)
    • Data harus tetap berada di lokasi yang mendasarinya, bahkan setelah tabel dihapus.
    • Anda memerlukan lokasi kustom, seperti akun penyimpanan non-default.
    • Program selain hive mengelola format data, lokasi, dan sebagainya.

Untuk informasi selengkapnya, lihat posting blog Pengenalan Tabel Internal dan Eksternal Apache Hive.

Fungsi yang ditentukan pengguna (UDF)

Apache Hive juga dapat diperluas melalui fungsi yang ditentukan pengguna (UDF). UDF memungkinkan Anda menerapkan fungsionalitas atau logika yang tidak mudah dimodelkan di HiveQL. Untuk contoh penggunaan UDF dengan Apache Hive, lihat dokumen berikut ini:

Contoh data

Apache Hive pada HDInsight dilengkapi dengan tabel internal bernama hivesampletable. HDInsight juga menyediakan contoh himpunan data yang dapat digunakan dengan Apache Hive. Himpunan data ini disimpan di direktori /example/data dan /HdiSamples. Direktori ini ada di penyimpanan default untuk kluster Anda.

Contoh kueri Apache Hive

Kolom proyek pernyataan HiveQL berikut ke dalam file /example/data/sample.log:

DROP TABLE log4jLogs;
CREATE EXTERNAL TABLE log4jLogs (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE LOCATION '/example/data/';
SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs
    WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log'
    GROUP BY t4;

Dalam contoh sebelumnya, pernyataan HiveQL melakukan tindakan berikut:

Pernyataan Deskripsi
DROP TABLE Jika tabel sudah ada, hapuslah.
CREATE EXTERNAL TABLE Membuat tabel eksternal baru di Apache Hive. Tabel eksternal hanya menyimpan definisi tabel di Apache Hive. Data dibiarkan di lokasi asli dan dalam format aslinya.
ROW FORMAT Memberi tahu Apache Hive bagaimana data diformat. Dalam hal ini, bidang di setiap log dipisahkan oleh spasi.
STORED AS TEXTFILE LOCATION Memberi tahu Apache Hive di mana data disimpan (direktori example/data) dan disimpan sebagai teks. Data bisa dalam satu file atau tersebar di beberapa file di dalam direktori.
SELECT Memilih hitungan dari semua baris di mana kolom t4 berisi nilai [ERROR]. Pernyataan ini mengembalikan nilai 3 karena ada tiga baris yang berisi nilai ini.
INPUT__FILE__NAME LIKE '%.log' Apache Hive mencoba menerapkan skema ke semua file dalam direktori. Dalam hal ini, direktori berisi file yang tidak cocok dengan skema. Untuk mencegah data sampah dalam hasil, pernyataan ini memberi tahu Apache Hive bahwa kami hanya mengembalikan data dari file yang diakhiri dengan .log.

Catatan

Tabel eksternal akan digunakan saat Anda mengharapkan data yang mendasarinya untuk diperbarui oleh sumber eksternal. Misalnya, proses pengunggahan data otomatis, atau operasi MapReduce.

Menghapus tabel eksternal tidak menghapus data, itu hanya menghapus definisi tabel.

Untuk membuat tabel internal, bukan eksternal, gunakan HiveQL berikut ini:

CREATE TABLE IF NOT EXISTS errorLogs (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
STORED AS ORC;
INSERT OVERWRITE TABLE errorLogs
SELECT t1, t2, t3, t4, t5, t6, t7 
    FROM log4jLogs WHERE t4 = '[ERROR]';

Pernyataan-pernyataan ini melaksanakan tindakan berikut:

Pernyataan Deskripsi
CREATE TABLE IF NOT EXISTS Jika tabel tidak ada, buat tabel tersebut. Karena kata kunci EXTERNAL tidak digunakan, pernyataan ini membuat tabel internal. Tabel disimpan di gudang data Apache Hive dan dikelola sepenuhnya oleh Apache Hive.
STORED AS ORC Menyimpan data dalam format Kolom Baris yang Dioptimalkan (ORC). ORC adalah format yang sangat dioptimalkan dan efisien untuk menyimpan data Apache Hive.
INSERT OVERWRITE ... SELECT Memilih baris dari log4jLogs tabel yang berisi [ERROR], lalu menyisipkan data ke dalam tabel errorLogs .

Catatan

Tidak seperti tabel eksternal, menghapus tabel internal juga menghapus data yang mendasarinya.

Meningkatkan performa kueri Apache Hive

Apache Tez

Apache Tez adalah kerangka kerja yang memungkinkan aplikasi intensif data, seperti Apache Hive, untuk berjalan jauh lebih efisien dalam skala besar. Tez diaktifkan secara default. Dokumen desain Apache Hive di Tez berisi detail tentang pilihan implementasi dan konfigurasi penyetelan.

Pemrosesan Analitik Latensi Rendah (LLAP)

LLAP (kadang-kadang dikenal sebagai Live Long and Process) adalah fitur baru dalam Apache Hive 2.0 yang memungkinkan caching kueri dalam memori.

HDInsight menyediakan LLAP dalam jenis kluster Interactive Query. Untuk informasi selengkapnya, lihat dokumen Memulai dengan Interactive Query.

Menjadwalkan kueri Hive

Ada beberapa layanan yang dapat digunakan untuk menjalankan kueri Apache Hive sebagai bagian dari alur kerja terjadwal atau sesuai permintaan.

Pabrik data Azure

Azure Data Factory memungkinkan Anda menggunakan HDInsight sebagai bagian dari alur Data Factory. Untuk informasi selengkapnya tentang menggunakan Apache Hive dari alur, lihat dokumen Mentransformasi data menggunakan aktivitas Apache Hive di Azure Data Factory.

Pekerjaan Apache Hive dan SSIS

Anda dapat menggunakan Layanan Integrasi Server SQL (SSIS) untuk menjalankan pekerjaan Apache Hive. Azure Feature Pack untuk SSIS menyediakan komponen berikut yang bekerja dengan pekerjaan Apache Hive di HDInsight.

Untuk informasi selengkapnya, lihat dokumentasi Azure Feature Pack.

Apache Oozie

Apache Oozie adalah sistem alur kerja dan koordinasi yang mengelola pekerjaan Hadoop. Untuk informasi selengkapnya tentang menggunakan Oozie dengan Apache Hive, lihat dokumen Menggunakan Apache Oozie untuk menentukan dan menjalankan alur kerja.

Catatan

Phoenix Storage Handler untuk Hive tidak didukung dalam HDInsight

Langkah berikutnya

Sekarang setelah Anda mempelajari apa itu Apache Hive dan cara menggunakannya dengan Hadoop di HDInsight, gunakan tautan berikut untuk menjelajahi cara lain untuk bekerja dengan Azure HDInsight.