Tutorial Sarang - Arsitektur Sarang dan Studi Kasus NASA



Blog tutorial Hive ini memberi Anda pengetahuan mendalam tentang Arsitektur Hive dan Model Data Sarang. Ini juga menjelaskan studi kasus NASA tentang Apache Hive.

Tutorial Apache Hive: Pengantar

Hive adalah alat yang digunakan secara ketat di seluruh industri untuk Big Data Analytics dan alat yang hebat untuk memulai dengan. Di blog tutorial Hive kali ini, kita akan membahas tentang Apache Hive secara mendalam. Apache Hive adalah alat gudang data di , yang menyediakan bahasa seperti SQL untuk membuat kueri dan menganalisis Big Data. Motivasi di balik pengembangan Hive adalah jalur pembelajaran tanpa hambatan bagi pengembang & analis SQL. Hive tidak hanya menjadi penyelamat bagi orang-orang dari latar belakang non-pemrograman, tetapi juga mengurangi pekerjaan programmer yang menghabiskan waktu berjam-jam menulis program MapReduce. Di blog Apache Hive Tutorial ini, saya akan berbicara tentang:





Tutorial Apache Hive: Apa itu Hive?

Apache Hive adalah sistem gudang data yang dibangun di atas Hadoop dan digunakan untuk menganalisis data terstruktur dan semi-terstruktur.Hive mengabstraksi kompleksitas Hadoop MapReduce. Pada dasarnya, ini menyediakan mekanisme untuk memproyeksikan struktur ke data dan melakukan kueri yang ditulis dalam HQL (Hive Query Language) yang mirip dengan pernyataan SQL. Secara internal, kueri atau HQL ini akan dikonversi ke pekerjaan pengurangan peta oleh kompiler Hive. Oleh karena itu, Anda tidak perlu khawatir menulis program MapReduce yang rumit untuk memproses data Anda menggunakan Hadoop. Ini ditargetkan untuk pengguna yang merasa nyaman dengan SQL. Apache Hive mendukung Data Definition Language (DDL), Data Manipulation Language (DML) dan User Defined Functions (UDF).

Tutorial Sarang untuk Pemula | Memahami Sarang Secara Mendalam | Edureka



SQL + Hadoop MapReduce = HiveQL

Tutorial Apache Hive: Story of Hive - dari Facebook ke Apache

Kasus Penggunaan Facebook - Tutorial Sarang - EdurekaAra : Tutorial Sarang - Kasus penggunaan Facebook

urutkan di c ++

Tantangan di Facebook: Pertumbuhan Data Eksponensial

Sebelum 2008, semua infrastruktur pemrosesan data di Facebook dibangun di sekitar gudang data berdasarkan RDBMS komersial. Infrastruktur tersebut cukup mampu untuk mencukupi kebutuhan Facebook saat itu. Namun, karena datanya mulai berkembang sangat cepat, mengelola dan memproses kumpulan data yang sangat besar ini menjadi tantangan besar. Menurut artikel Facebook, data diskalakan dari kumpulan data 15 TB pada tahun 2007 menjadi data 2 PB pada tahun 2009. Selain itu, banyak produk Facebook melibatkan analisis data seperti Wawasan Pemirsa, Leksikon Facebook, Iklan Facebook, dll. Jadi, mereka membutuhkan solusi yang skalabel dan ekonomis untuk mengatasi masalah ini, dan karena itu mulai menggunakan kerangka kerja Hadoop.



Demokratisasi Hadoop - MapReduce

Namun, seiring bertambahnya data, kompleksitas kode Map-Reduce tumbuh secara proporsional. Jadi, melatih orang-orang dengan latar belakang non-pemrograman untuk menulis program MapReduce menjadi sulit. Juga, untuk melakukan analisis sederhana, seseorang harus menulis seratus baris kode MapReduce. Karena, SQL digunakan secara luas oleh para insinyur dan analis, termasuk Facebook, oleh karena itu, menempatkan SQL di atas Hadoop tampaknya merupakan cara yang logis untuk membuat Hadoop dapat diakses oleh pengguna dengan latar belakang SQL.

Oleh karena itu, kemampuan SQL untuk mencukupi sebagian besar persyaratan analitik dan skalabilitas melahirkan Hadoop Apache Hive yang memungkinkan untuk melakukan kueri seperti SQL pada data yang ada di HDFS. Kemudian, proyek Hive dibuka bersumber pada Agustus 2008 oleh Facebook dan tersedia secara gratis sebagai Apache Hive hari ini.

Sekarang, mari kita lihat fitur atau kelebihan sarang lebah yang membuatnya begitu populer.

Tutorial Apache Hive: Keuntungan dari Hive

  • Berguna untuk orang yang bukan dari latar belakang pemrograman karena menghilangkan kebutuhan untuk menulis program MapReduce yang kompleks.
  • Dapat diperluas dan terukur untuk mengatasi peningkatan volume dan variasi data, tanpa mempengaruhi kinerja sistem.
  • Ini sebagai alat ETL (Ekstrak, Transformasi, Muat) yang efisien.
  • Hive mendukung aplikasi klien apa pun yang ditulis dalam Java, PHP, Python, C ++ atau Ruby dengan mengeksposnya Server barang bekas . (Anda dapat menggunakan bahasa sisi klien ini yang disematkan dengan SQL untuk mengakses database seperti DB2, dll.).
  • Karena informasi metadata dari Hive disimpan dalam RDBMS, ini secara signifikan mengurangi waktu untuk melakukan pemeriksaan semantik selama eksekusi kueri.

Tutorial Apache Hive: Di mana menggunakan Apache Hive?

Apache Hive memanfaatkan kedua dunia yaitu Sistem Database SQL dan kerangka. Oleh karena itu, ini digunakan oleh banyak perusahaan. Ini sebagian besar digunakan untuk pergudangan data di mana Anda dapat melakukan analitik dan penambangan data yang tidak memerlukan pemrosesan waktu nyata. Beberapa bidang tempat Anda dapat menggunakan Apache Hive adalah sebagai berikut:

  • Data Warehousing
  • Analisis ad-hoc

Seperti yang dikatakan, Anda tidak dapat bertepuk tangan hanya dengan satu tangan, yaitu Anda tidak dapat menyelesaikan setiap masalah dengan satu alat. Oleh karena itu, Anda dapat memasangkan sarang dengan alat lain untuk menggunakannya di banyak domain lain. Misalnya, Tableau bersama dengan Apache Hive dapat digunakan untuk Visualisasi Data, integrasi Apache Tez dengan Hive akan memberi Anda kemampuan pemrosesan waktu nyata, dll.
Melanjutkan ke depan dalam blog Tutorial Apache Hive ini, mari kita lihat studi kasus NASA di mana Anda akan mengetahui bagaimana Hive memecahkan masalah yang dihadapi para ilmuwan NASA saat melakukan evaluasi Model Iklim.

Tutorial Sarang: Studi Kasus NASA

Model iklim merupakan representasi matematis dari sistem iklim berdasarkan berbagai faktor yang mempengaruhi iklim bumi. Pada dasarnya, ini menggambarkan interaksi berbagai penggerak iklim seperti laut, matahari, atmosfer, dllmemberikan wawasan tentang dinamika sistem iklim. Ini digunakan untuk memproyeksikan kondisi iklim dengan mensimulasikan perubahan iklim berdasarkan faktor-faktor yang mempengaruhi iklim. Laboratorium Propulsi Jet NASA telah mengembangkan Sistem Evaluasi Model Iklim Regional (RCMES) untuk analisis dan evaluasi model keluaran iklim terhadap data penginderaan jauh yang ada di berbagai repositori eksternal.

RCMES (Sistem Evaluasi Model Iklim Regional) memiliki dua komponen:

  • RCMED (Database Evaluasi Model Iklim Regional):

Ini adalah database cloud yang dapat diskalakan yang memuat data penginderaan jauh dan analisis ulang data yang terkait dengan iklim menggunakan ekstraktor seperti ekstraktor Apache OODT, Apache Tika, dll. Terakhir, ia mentransformasikan data sebagai model titik data yang berbentuk (latitude , bujur, waktu, nilai, tinggi) dan menyimpannya ke dalam database My SQL. Klien dapat mengambil data yang ada di RCMED dengan melakukan kueri Ruang / Waktu. Deskripsi pertanyaan semacam itu tidak relevan untuk kita sekarang.

  • RCMET (Perangkat Evaluasi Model Iklim Regional):

Ini memberikan pengguna kemampuan untuk membandingkan data referensi yang ada di RCMED dengan data keluaran model iklim yang diambil dari beberapa sumber lain untuk melakukan berbagai jenis analisis dan evaluasi. Anda dapat merujuk ke gambar yang diberikan di bawah ini untuk memahami arsitektur RCMES.

Data referensi dalam RCMED berasal dari penginderaan jauh berbasis satelit, sesuai dengan parameter berbeda yang diperlukan untuk evaluasi model iklim. Misalnya - AIRS (Atmospheric Infrared Sounder) memberikan parameter seperti suhu udara permukaan, suhu dan Geopotensial, TRMM (Tropical Rainfall Measurement Mission) menyediakan curah hujan bulanan, dll.

Masalah yang dihadapi NASA menggunakan Sistem Database MySQL:

  • Setelah memuat database MySQL dengan 6 miliar bentuk tupel (lintang, bujur, waktu, nilai titik data, ketinggian), sistem mengalami crash seperti yang ditunjukkan pada gambar di atas.
  • Bahkan setelah membagi seluruh tabel menjadi himpunan bagian yang lebih kecil, sistem menghasilkan overhead yang besar saat memproses data.

Jadi, mereka memerlukan solusi skalabel yang dapat menyimpan dan memproses data dalam jumlah besar ini dengan kemampuan kueri seperti SQL. Akhirnya, mereka memutuskan untuk menggunakan Apache Hive untuk mengatasi masalah yang disebutkan di atas.

Bagaimana Apache Hive dapat mengatasi masalah tersebut?

Sekarang, mari kita lihat, fitur apa saja yang meyakinkan tim JPL NASA untuk menyertakan Apache Hive sebagai bagian integral dalam strategi solusi mereka:

  • Karena, Apache Hive berjalan di atas Hadoop, ia dapat diskalakan dan dapat memproses data secara terdistribusi dan paralel.
  • Ini menyediakan Bahasa Query Hive yang mirip dengan SQL dan karenanya mudah dipelajari.

Penyebaran sarang:

Gambar berikut menjelaskan Arsitek RCMES dengan integrasi Apache Hive:

Ara : Tutorial Hive - Arsitektur RCMES dengan Apache Hive

Gambar di atas menunjukkan penerapan sarang apache di RCMES. Langkah-langkah berikut diambil oleh tim NASA saat menyebarkan Apache Hive:

  • Mereka menginstal Hive menggunakan Cloudera dan Apache Hadoop seperti yang ditunjukkan pada gambar di atas.
  • Mereka menggunakan Apache Sqoop untuk menyerap data ke dalam Hive dari database MySQL.
  • Apache OODT wrapper diimplementasikan untuk melakukan kueri di Hive dan mengambil data kembali ke RCMET.

Pengamatan Benchmarking Awal dengan Sarang:

  • Awalnya mereka memuat 2,5 miliar titik data ke dalam satu tabel dan melakukan kueri penghitungan. Sebagai contoh, Sarang> pilih hitungan (datapoint_id) dari datapoint. Butuh 5-6 menit untuk menghitung semua catatan (15-17 menit untuk 6,8 miliar catatan).
  • Fase pengurangan berlangsung cepat, tetapi fase peta memakan waktu 95% dari total waktu pemrosesan. Mereka menggunakan enam ( 4x quad-core ) sistem dengan RAM 24 GB (perkiraan) di masing-masing sistem.
  • Bahkan setelah menambahkan lebih banyak mesin, mengubah ukuran blok HDFS (64 MB, 128 MB, 256 MB) dan mengubah banyak variabel konfigurasi lainnya (io.menyortir.faktor, i.menyortir.mb), mereka tidak banyak berhasil dalam mengurangi waktu untuk menyelesaikan penghitungan.

Masukan dari Anggota Komunitas Hive:

Akhirnya, anggota komunitas Hive datang untuk menyelamatkan dan memberikan berbagai wawasan untuk menyelesaikan masalah dengan implementasi Hive mereka saat ini:

  • Mereka menyebutkan bahwa kecepatan baca HDFS kira-kira 60 MB / dtk jika dibandingkan dengan 1 GB / dtk dalam kasus disk lokal, tergantung pada kapasitas jaringan dan beban kerja pada NameNode.
  • Para anggota menyarankan itu 16 pembuat peta akan diperlukan dalam sistem mereka saat ini agar sesuai dengan kinerja I / O dari tugas non-Hadoop lokal.
  • Mereka juga menyarankan untuk mengurangi ukuran terpisah untuk setiap pembuat peta untuk menambah jumlahnyadaripembuat peta dan karena itu, memberikan lebih banyak paralelisme.
  • Akhirnya, anggota masyarakat menyuruh mereka gunakan hitungan (1) alih-alih mengacu pada menghitung ( datapoint_id) . Ini karena dalam kasus pencacahan (1), tidak ada kolom referensi dan oleh karena itu, tidak ada dekompresi dan deserialisasi yang terjadi saat melakukan penghitungan.

Akhirnya, NASA dapat menyesuaikan cluster Hive mereka sesuai dengan harapan mereka dengan mempertimbangkan semua saran yang diberikan oleh anggota komunitas Hive. Dan oleh karena itu, mereka dapat meminta miliaran baris hanya dalam 15 detik menggunakan konfigurasi sistem yang disebutkan di atas.

Tutorial Apache Hive: Arsitektur Sarang dan Komponennya

Gambar berikut menjelaskan Arsitektur Hive dan alur tempat kueri dikirimkanSarang lebahdan akhirnya diproses menggunakan kerangka kerja MapReduce:

Ara : Tutorial Sarang - Arsitektur Sarang

Seperti yang ditunjukkan pada gambar di atas, Arsitektur Hive dapat dikategorikan ke dalam komponen berikut:

  • Klien sarang: Hive mendukung aplikasi yang ditulis dalam banyak bahasa seperti Java, C ++, Python dll. Menggunakan driver JDBC, Thrift dan ODBC. Oleh karena itu seseorang selalu dapat menulis aplikasi klien sarang yang ditulis dalam bahasa pilihan mereka.
  • Layanan Sarang: Apache Hive menyediakan berbagai layanan seperti CLI, Antarmuka Web, dll. Untuk melakukan kueri. Kami akan membahas masing-masing sebentar lagi di blog tutorial Hive ini.
  • Kerangka pemrosesan dan Manajemen Sumber Daya: Secara internal,Hive menggunakan kerangka kerja Hadoop MapReduce sebagai mesin de facto untuk mengeksekusi kueri. adalah topik tersendiri dan oleh karena itu, tidak dibahas di sini.
  • Penyimpanan Terdistribusi: Karena Hive diinstal di atas Hadoop, Hive menggunakan HDFS yang mendasari untuk penyimpanan terdistribusi. Anda dapat merujuk ke Blog HDFS untuk mempelajari lebih lanjut tentang itu.

Sekarang, mari kita jelajahi dua komponen utama pertama dalam Arsitektur Hive:

1. Klien Sarang:

Apache Hive mendukung berbagai jenis aplikasi klien untuk melakukan kueri di Hive. Klien ini dapat dikategorikan menjadi tiga jenis:

  • Klien Hemat: Karena server Hive didasarkan pada Apache Thrift, ini dapat melayani permintaan dari semua bahasa pemrograman yang mendukung Thrift.
  • Klien JDBC: Hive memungkinkan aplikasi Java untuk menyambungkannya menggunakan driver JDBC yang ditentukan di organisasi kelas.Apache.hadoop.hive.jdbc.HiveDriver.
  • Klien ODBC: Driver ODBC Hive memungkinkan aplikasi yang mendukung protokol ODBC untuk terhubung ke Hive. (Seperti driver JDBC, driver ODBC menggunakan Hemat untuk berkomunikasi dengan server Hive.)

2. Layanan Sarang:

Hive menyediakan banyak layanan seperti yang ditunjukkan pada gambar di atas. Mari kita lihat masing-masing:

  • Hive CLI (Antarmuka Baris Perintah): Ini adalah shell default yang disediakan oleh Hive di mana Anda dapat menjalankan kueri dan perintah Hive Anda secara langsung.
  • Antarmuka Web Apache Hive: Selain antarmuka baris perintah, Hive juga menyediakan GUI berbasis web untuk menjalankan kueri dan perintah Hive.
  • Server Sarang: Server Hive dibangun di atas Apache Thrift dan oleh karena itu, juga disebut sebagai Thrift Server yang memungkinkan klien yang berbeda untuk mengirimkan permintaan ke Hive dan mengambil hasil akhirnya.
  • Sopir Apache Hive: Ini bertanggung jawab untuk menerima pertanyaan yang dikirimkan melalui antarmuka CLI, UI web, Hemat, ODBC atau JDBC oleh klien. Kemudian, driver meneruskan kueri ke compiler tempat penguraian, pemeriksaan jenis, dan analisis semantik dilakukan dengan bantuan skema yang ada di metastore. Pada langkah berikutnya, rencana logis yang dioptimalkan dihasilkan dalam bentuk DAG (Grafik Acyclic Terarah) tugas pengurangan peta dan tugas HDFS. Terakhir, mesin eksekusi menjalankan tugas-tugas ini dalam urutan dependensinya, menggunakan Hadoop.
  • Metastore: Anda bisa memikirkan metastoresebagai repositori pusat untuk menyimpan semua informasi metadata Hive. Metadata sarang mencakup berbagai jenis informasi seperti struktur tabel dan partisibersama dengan kolom, jenis kolom, serializer dan deserializer yang diperlukan untuk operasi Baca / Tulis pada data yang ada di HDFS. Metastore tersebutterdiri dari dua unit dasar:
    • Sebuah layanan yang menyediakan metastoreakses ke tempat lainrLayanan sarang.
    • Penyimpanan disk untuk metadata yang terpisah dari penyimpanan HDFS.

Sekarang, mari kita pahami berbagai cara menerapkan metastore sarangdi bagian selanjutnya dari Tutorial Sarang ini.

Tutorial Apache Hive: Konfigurasi Metastore

Metastore menyimpan informasi meta data menggunakan RDBMS dan lapisan ORM (Object Relational Model) open source yang disebut Data Nucleus yang mengubah representasi objek menjadi skema relasional dan sebaliknya. Alasan memilih RDBMS daripada HDFS adalah untuk mencapai latensi rendah. Kita dapat mengimplementasikan metastore dalam tiga konfigurasi berikut:

1. Metastore Tertanam:

Baik layanan metastore dan layanan Hive berjalan di JVM yang sama secara default menggunakan instance Derby Database yang disematkan di mana metadata disimpan di disk lokal. Ini disebut konfigurasi metastore tertanam. Dalam hal ini, hanya satu pengguna yang dapat terhubung ke database metastore dalam satu waktu. Jika Anda memulai contoh kedua dari driver Hive, Anda akan mendapatkan kesalahan. Ini bagus untuk pengujian unit, tetapi tidak untuk solusi praktis.

2. Metastore Lokal:

Konfigurasi ini memungkinkan kita untuk memiliki beberapa sesi Hive yaitu Beberapa pengguna dapat menggunakan database metastore pada saat yang bersamaan. Ini dicapai dengan menggunakan database yang sesuai dengan JDBC seperti MySQL yang berjalan di JVM terpisah atau mesin yang berbeda dari yang ada di layanan Hive dan layanan metastore yang berjalan di JVM yang sama seperti yang ditunjukkan di atas. Secara umum, pilihan paling populer adalah mengimplementasikan server MySQL sebagai database metastore.

3. Metastore Jarak Jauh:

fungsi penyortiran c ++

Dalam konfigurasi metastore jarak jauh, layanan metastore berjalan di JVM-nya sendiri yang terpisah dan bukan di JVM layanan Hive. Proses lain berkomunikasi dengan server metastore menggunakan API Jaringan Hemat. Anda dapat memiliki satu atau beberapa server metastore dalam hal ini untuk menyediakan lebih banyak ketersediaan.Keuntungan utama menggunakan metastore jarak jauh adalah Anda tidak perlu membagikan kredensial login JDBC dengan setiap pengguna Hive untuk mengakses database metastore.

Tutorial Apache Hive: Model Data

Data di Hive dapat dikategorikan menjadi tiga jenis pada level granular:

  • Meja
  • Partisi
  • Ember

Tabel:

Tabel di Hive sama dengan tabel yang ada di Database Relasional. Anda dapat melakukan operasi filter, proyek, bergabung dan serikat pada mereka. Ada dua jenis tabel di Hive:

1. Tabel Terkelola:

Perintah:

BUAT TABEL (jenis_data kolom1, jenis_data kolom2)

LOAD DATA INPATH KE tabel managed_table

Seperti namanya (tabel terkelola), Hive bertanggung jawab untuk mengelola data tabel terkelola. Dengan kata lain, yang saya maksud dengan mengatakan, 'Hive mengelola data', adalah jika Anda memuat data dari file yang ada di HDFS ke dalam Hive Tabel Terkelola dan berikan perintah DROP padanya, tabel beserta metadatanya akan dihapus. Jadi, data yang tergolong di drop tabel_kelola tidak lagi ada di mana pun di HDFS dan Anda tidak dapat mengambilnya dengan cara apa pun. Pada dasarnya, Anda memindahkan data saat mengeluarkan perintah LOAD dari lokasi file HDFS ke direktori gudang Hive.

apa __init__

catatan: Path default dari direktori gudang diatur ke / user / hive / warehouse. Data tabel Hive berada di warehouse_directory / nama_tabel (HDFS). Anda juga dapat menentukan jalur direktori gudang di parameter konfigurasi hive.metastore.warehouse.dir yang ada di hive-site.xml.

2. Tabel Eksternal:

Perintah:

BUAT TABEL EKSTERNAL (jenis_data kolom1, jenis_data kolom2) LOKASI ''

BEBAN DATA INPATH '' KE TABEL

Untuk tabel eksternal , Hive tidak bertanggung jawab untuk mengelola data. Dalam kasus ini, saat Anda mengeluarkan perintah LOAD, Hive memindahkan data ke direktori gudang. Kemudian, Hive membuat informasi metadata untuk tabel eksternal. Sekarang, jika Anda mengeluarkan perintah DROP pada file tabel eksternal , hanya informasi metadata mengenai tabel eksternal yang akan dihapus. Oleh karena itu, Anda masih dapat mengambil data tabel yang sangat eksternal tersebut dari direktori gudang menggunakan perintah HDFS.

Partisi:

Perintah:

BUAT TABEL nama_tabel (jenis_data kolom1, jenis_data kolom2) BERPARTISISI OLEH (jenis_data partisi1, jenis_data partisi2, & jenis_kolom.)

Hive mengatur tabel menjadi beberapa partisi untuk mengelompokkan tipe data yang serupa bersama-sama berdasarkan kolom atau kunci partisi. Setiap Tabel dapat memiliki satu atau lebih kunci partisi untuk mengidentifikasi partisi tertentu. Hal ini memungkinkan kami untuk memiliki kueri yang lebih cepat tentang potongan data.

catatan: Ingat, kesalahan paling umum yang dibuat saat membuat partisi adalah menentukan nama kolom yang ada sebagai kolom partisi. Saat melakukannya, Anda akan menerima pesan kesalahan - 'Kesalahan dalam analisis semantik: Kolom berulang di kolom partisi'.

Mari kita pahami partisi dengan mengambil contoh di mana saya memiliki tabel student_details yang berisi informasi siswa dari beberapa perguruan tinggi teknik seperti student_id, nama, jurusan, tahun, dll. Sekarang, jika saya melakukan partisi berdasarkan kolom jurusan, informasi semua siswa milik departemen tertentu akan disimpan bersama di partisi itu. Secara fisik, partisi tidak lain adalah sub-direktori dalam direktori tabel.

Misalkan kita memiliki data untuk tiga departemen di tabel student_details - CSE, ECE dan Civil. Oleh karena itu, kami akan memiliki total tiga partisi untuk masing-masing departemen seperti yang ditunjukkan pada gambar di bawah ini. Dan, untuk setiap departemen kita akan memiliki semua data tentang departemen itu yang berada di sub-direktori terpisah di bawah direktori tabel Hive. Misalnya, semua data mahasiswa tentang jurusan CSE akan disimpan di user / hive / warehouse / student_details / dept. = CSE. Jadi, pertanyaan tentang siswa CSE hanya perlu melihat data yang ada di partisi CSE. Ini membuat pemartisian sangat berguna karena mengurangi latensi kueri dengan hanya memindai relevan data yang dipartisi, bukan seluruh kumpulan data. Faktanya, dalam penerapan dunia nyata, Anda akan berurusan dengan ratusan TB data. Jadi, bayangkan memindai data dalam jumlah besar ini untuk beberapa kueri di mana 95% data yang Anda pindai tidak relevan dengan kueri Anda.

Saya akan menyarankan Anda untuk membuka blog di Perintah sarang di mana Anda akan menemukan berbagai cara mengimplementasikan partisi dengan sebuah contoh.

Ember:

Perintah:

BUAT TABEL nama_tabel DIPARTISI OLEH (partisi1 data_type, partisi2 data_type, & hellip.) DIKELOMPOKKAN OLEH (nama_kolom1, nama_kolom2,…) DIURUTKAN OLEH (nama_kolom [ASC | DESC],…)] KE DALAM num_buckets BUCKETS

Sekarang, Anda dapat membagi setiap partisi atau tabel yang tidak dipartisi menjadi Bucket berdasarkan fungsi hash kolom di tabel. Sebenarnya, setiap keranjang hanyalah sebuah file di direktori partisi atau direktori tabel (tabel tidak dipartisi). Oleh karena itu, jika Anda memilih untuk membagi partisi menjadi n keranjang, Anda akan memiliki n file di setiap direktori partisi Anda. Misalnya, Anda dapat melihat gambar di atas di mana kami telah mengelompokkan setiap partisi menjadi 2 kotak. Jadi, setiap partisi, misalnya CSE, akan memiliki dua file yang masing-masing akan menyimpan data siswa CSE.

Bagaimana Hive mendistribusikan baris ke dalam keranjang?

Nah, Hive menentukan jumlah ember untuk satu baris dengan menggunakan rumus: hash_function (bucketing_column) modulo (num_of_buckets) . Di sini, hash_function tergantung pada tipe data kolom. Misalnya, jika Anda mengelompokkan tabel berdasarkan beberapa kolom, katakanlah user_id, dari tipe data INT, fungsi hash akan menjadi - hash_function (user_id ) = nilai integer dari user_id . Dan, misalkan Anda telah membuat dua bucket, maka Hive akan menentukan baris yang akan menjadi bucket 1 di setiap partisi dengan menghitung: (nilai user_id) modulo (2). Oleh karena itu, dalam kasus ini, baris yang memiliki user_id yang diakhiri dengan digit integer genap akan berada dalam keranjang yang sama sesuai dengan setiap partisi. Fungsi hash untuk tipe data lain agak rumit untuk dihitung dan pada kenyataannya, untuk sebuah string bahkan tidak dapat dikenali secara manusiawi.

catatan: Jika Anda menggunakan Apache Hive 0.x atau 1.x, Anda harus mengeluarkan perintah - setel hive.enforce.bucketing = true dari terminal Hive Anda sebelum melakukan pengelompokan. Ini akan memungkinkan Anda memiliki jumlah reducer yang benar saat menggunakan klausul demi klausa untuk mengelompokkan kolom. Jika Anda belum melakukannya, Anda mungkin menemukan jumlah file yang telah dibuat di direktori tabel Anda tidak sama dengan jumlah keranjang. Sebagai alternatif, Anda juga dapat mengatur jumlah peredam yang sama dengan jumlah keranjang dengan menggunakan set mapred.reduce.task = num_bucket.

Mengapa kita membutuhkan ember?

Ada dua alasan utama untuk melakukan pengelompokan ke partisi:

  • UNTUK sisi peta bergabung membutuhkan data yang termasuk dalam kunci penghubung unik untuk ada di partisi yang sama. Tetapi bagaimana dengan kasus-kasus di mana kunci partisi Anda berbeda dengan join? Oleh karena itu, dalam kasus ini Anda dapat melakukan penggabungan sisi peta dengan mengelompokkan tabel menggunakan kunci penghubung.
  • Pengelompokan membuat proses pengambilan sampel lebih efisien dan oleh karena itu, memungkinkan kami untuk mengurangi waktu kueri.

Saya ingin menyimpulkan blog tutorial sarang ini di sini. Saya cukup yakin setelah membaca blog tutorial Hive ini, Anda akan menyadari kesederhanaan Apache Hive. Sejak itu, kalian telah mempelajari semua dasar-dasar Hive, sekarang saatnya untuk mencoba pengalaman langsung dengan Apache Hive. Jadi, lihat blog berikutnya dalam seri blog Tutorial Hive ini yang ada di instalasi Hive dan mulai mengerjakan Apache Hive.

Sekarang Anda telah memahami Apache Hive dan fitur-fiturnya, lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus Pelatihan Sertifikasi Edureka Big Data Hadoop membantu peserta didik menjadi ahli dalam domain HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume, dan Sqoop menggunakan kasus penggunaan waktu nyata pada Ritel, Media Sosial, Penerbangan, Pariwisata, domain Keuangan.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan menghubungi Anda kembali.