Tutorial Hive - Senibina Hive dan Kajian Kes NASA



Blog tutorial Hive ini memberi anda pengetahuan mendalam mengenai Hive Architecture dan Hive Data Model. Ia juga menjelaskan kajian kes NASA di Apache Hive.

Tutorial Apache Hive: Pengenalan

Hive adalah alat terpakai seluruh industri untuk Analisis Data Besar dan alat yang bagus untuk memulakan anda dengan. Dalam blog tutorial Hive ini, kita akan membincangkan mengenai Apache Hive secara mendalam. Apache Hive adalah alat pergudangan data di , yang menyediakan bahasa seperti SQL untuk membuat pertanyaan dan menganalisis Big Data. Motivasi di sebalik pengembangan Hive adalah jalan belajar tanpa geseran untuk pembangun & penganalisis SQL. Hive bukan sahaja menjadi penyelamat bagi orang dari latar belakang bukan pengaturcaraan, tetapi juga mengurangkan kerja pengaturcara yang menghabiskan berjam-jam menulis program MapReduce. Di blog Tutorial Apache Hive ini, saya akan membincangkan mengenai:





Tutorial Apache Hive: Apa itu Hive?

Apache Hive adalah sistem gudang data yang dibangun di atas Hadoop dan digunakan untuk menganalisis data berstruktur dan separa berstruktur.Hive mengaburkan kerumitan Hadoop MapReduce. Pada dasarnya, ia menyediakan mekanisme untuk memproyeksikan struktur ke data dan melakukan pertanyaan yang ditulis dalam HQL (Hive Query Language) yang serupa dengan pernyataan SQL. Secara dalaman, pertanyaan atau HQL ini ditukarkan ke peta mengurangkan pekerjaan oleh penyusun Hive. Oleh itu, anda tidak perlu risau untuk menulis program MapReduce yang kompleks untuk memproses data anda menggunakan Hadoop. Ia disasarkan kepada pengguna yang selesa dengan SQL. Apache Hive menyokong Bahasa Definisi Data (DDL), Bahasa Manipulasi Data (DML) dan Fungsi Ditetapkan Pengguna (UDF).

Tutorial Hive untuk Pemula | Memahami Sarang Dalam Kedalaman | Edureka



SQL + Hadoop MapReduce = HiveQL

Tutorial Apache Hive: Kisah Hive - dari Facebook ke Apache

Kes Penggunaan Facebook - Tutorial Hive - EdurekaRajah : Tutorial Hive - Kes penggunaan Facebook

Cabaran di Facebook: Pertumbuhan Data Eksponensial

Sebelum tahun 2008, semua infrastruktur pemprosesan data di Facebook dibina di sekitar gudang data berdasarkan RDBMS komersial. Prasarana ini cukup mampu memenuhi keperluan Facebook pada masa itu. Tetapi, ketika data mulai berkembang dengan sangat cepat, menjadi cabaran besar untuk mengurus dan memproses set data besar ini. Menurut artikel Facebook, data yang diperkecil dari kumpulan data 15 TB pada tahun 2007 menjadi data 2 PB pada tahun 2009. Juga, banyak produk Facebook melibatkan analisis data seperti Audience Insights, Facebook Lexicon, Facebook Ads, dll. Jadi, mereka memerlukan penyelesaian yang boleh diskalakan dan ekonomik untuk mengatasi masalah ini dan, oleh itu mula menggunakan kerangka Hadoop.



Mendemokrasi Hadoop - MapReduce

Tetapi, ketika data bertambah, kerumitan kod Map-Reduce berkembang secara berkadar. Oleh itu, melatih orang dengan latar belakang bukan pengaturcaraan untuk menulis program MapReduce menjadi sukar. Juga, untuk melakukan analisis mudah seseorang harus menulis seratus baris kod MapReduce. Sejak, SQL digunakan secara meluas oleh jurutera dan penganalisis, termasuk Facebook, oleh itu, meletakkan SQL di bahagian atas Hadoop nampaknya cara yang logik untuk menjadikan Hadoop dapat diakses oleh pengguna dengan latar belakang SQL.

Oleh itu, kemampuan SQL mencukupi untuk sebahagian besar keperluan analisis dan skalabilitas Hadoop melahirkan Sarang Apache yang memungkinkan untuk melakukan SQL seperti pertanyaan pada data yang terdapat dalam HDFS. Kemudian, projek Hive dibuka bersumber pada bulan Ogos 2008 oleh Facebook dan boleh didapati secara percuma sebagai Apache Hive hari ini.

Sekarang, mari kita lihat ciri atau kelebihan Hive yang menjadikannya begitu popular.

Tutorial Apache Hive: Kelebihan Hive

  • Berguna untuk orang-orang yang bukan dari latar belakang pengaturcaraan kerana menghilangkan keperluan untuk menulis program MapReduce yang kompleks.
  • Boleh dipanjangkan dan berskala untuk mengatasi peningkatan jumlah dan ragam data, tanpa mempengaruhi prestasi sistem.
  • Ia sebagai alat ETL (Ekstrak, Transform, Beban) yang cekap.
  • Hive menyokong sebarang aplikasi pelanggan yang ditulis dalam Java, PHP, Python, C ++ atau Ruby dengan mendedahkannya Pelayan berjimat cermat . (Anda dapat menggunakan bahasa sisi klien ini yang disertakan dengan SQL untuk mengakses pangkalan data seperti DB2, dll.).
  • Oleh kerana maklumat metadata Hive disimpan dalam RDBMS, ini secara signifikan mengurangkan masa untuk melakukan semantik pemeriksaan semasa pelaksanaan pertanyaan.

def __init __ (diri):

Tutorial Apache Hive: Di mana menggunakan Apache Hive?

Apache Hive memanfaatkan kedua-dua dunia iaitu Sistem Pangkalan Data SQL dan kerangka. Oleh itu, ia digunakan oleh sebilangan besar syarikat. Ia kebanyakannya digunakan untuk pergudangan data di mana anda boleh melakukan analisis dan perlombongan data yang tidak memerlukan pemprosesan masa nyata. Beberapa bidang di mana anda boleh menggunakan Apache Hive adalah seperti berikut:

  • Pergudangan Data
  • Analisis ad-hoc

Seperti yang dikatakan, anda tidak dapat bertepuk tangan dengan satu tangan sahaja. Anda tidak dapat menyelesaikan setiap masalah dengan satu alat. Oleh itu, anda boleh memasangkan Hive dengan alat lain untuk menggunakannya di banyak domain lain. Sebagai contoh, Tableau bersama Apache Hive dapat digunakan untuk Visualisasi Data, integrasi Apache Tez dengan Hive akan memberi anda kemampuan memproses masa nyata, dll.
Melangkah ke depan dalam blog Tutorial Apache Hive ini, mari kita lihat kajian kes NASA di mana anda akan mengetahui bagaimana Hive menyelesaikan masalah yang dihadapi para saintis NASA ketika melakukan penilaian Model Iklim.

Tutorial Hive: Kajian Kes NASA

Model iklim adalah representasi matematik sistem iklim berdasarkan pelbagai faktor yang mempengaruhi iklim Bumi. Pada asasnya, ia menggambarkan interaksi pelbagai pemacu iklim seperti lautan, matahari, atmosfera, dllmemberikan gambaran mengenai dinamika sistem iklim. Ini digunakan untuk memproyeksikan keadaan iklim dengan mensimulasikan perubahan iklim berdasarkan faktor yang mempengaruhi iklim. Laboratorium Jet Propulsion NASA telah mengembangkan Sistem Penilaian Model Iklim Serantau (RCMES) untuk analisis dan penilaian model output iklim terhadap data penginderaan jauh yang terdapat di berbagai repositori luaran.

RCMES (Sistem Penilaian Model Iklim Serantau) mempunyai dua komponen:

  • RCMED (Pangkalan Data Penilaian Model Iklim Wilayah):

Ia adalah pangkalan data awan berskala yang memuat data penginderaan jauh dan menganalisis semula data yang berkaitan dengan iklim menggunakan pengekstrak seperti pengekstrak Apache OODT, Apache Tika, dll. Akhirnya, ia mengubah data sebagai model titik data yang berbentuk (garis lintang , garis bujur, masa, nilai, tinggi) dan menyimpannya ke dalam pangkalan data SQL Saya. Pelanggan boleh mengambil data yang ada dalam RCMED dengan melakukan pertanyaan Ruang / Masa. Penerangan mengenai pertanyaan tersebut tidak relevan untuk kami sekarang.

  • RCMET (Kit Alat Penilaian Model Iklim Serantau):

Ini memberi pengguna kemampuan untuk membandingkan data rujukan yang ada di RCMED dengan data output model iklim yang diambil dari beberapa sumber lain untuk melakukan berbagai jenis analisis dan penilaian. Anda boleh merujuk gambar yang diberikan di bawah ini untuk memahami seni bina RCMES.

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

Masalah yang dihadapi oleh NASA menggunakan Sistem Pangkalan Data MySQL:

  • Setelah memuatkan pangkalan data MySQL dengan 6 bilion tupel bentuk (garis lintang, garis bujur, waktu, nilai titik data, ketinggian), sistem tersebut terhempas seperti yang ditunjukkan pada gambar di atas.
  • Walaupun setelah membahagikan keseluruhan jadual menjadi subset yang lebih kecil, sistem menghasilkan overhead yang besar semasa memproses data.

Oleh itu, mereka memerlukan penyelesaian berskala yang dapat menyimpan dan memproses sejumlah besar data ini dengan SQL seperti kemampuan membuat pertanyaan. Akhirnya, mereka memutuskan untuk menggunakan Apache Hive untuk mengatasi masalah yang dinyatakan di atas.

Bagaimana Apache Hive dapat menyelesaikan masalahnya?

Sekarang, mari kita lihat, apakah ciri-ciri tersebut yang meyakinkan pasukan JPL NASA untuk memasukkan Apache Hive sebagai bahagian penting dalam strategi penyelesaian mereka:

  • Sejak, Apache Hive berjalan di atas Hadoop, ia dapat diskalakan dan dapat memproses data secara tersebar dan selari.
  • Ia menyediakan Hive Query Language yang serupa dengan SQL dan oleh itu mudah dipelajari.

Penyebaran Hive:

Gambar berikut menerangkan RCMES Architect dengan integrasi Apache Hive:

Rajah : Tutorial Hive - Senibina RCMES dengan Apache Hive

Gambar di atas menunjukkan penyebaran sarang apache di RCMES. Berikut langkah-langkah yang diambil oleh pasukan NASA ketika mengerahkan Apache Hive:

  • Mereka memasang Hive menggunakan Cloudera dan Apache Hadoop seperti yang ditunjukkan pada gambar di atas.
  • Mereka menggunakan Apache Sqoop untuk memasukkan data ke dalam Hive dari pangkalan data MySQL.
  • Apache OODT wrapper dilaksanakan untuk melakukan pertanyaan pada Hive dan mengambil kembali data ke RCMET.

Pemerhatian Penanda Aras Awal dengan Sarang:

  • Pada mulanya mereka memuatkan 2.5 bilion titik data ke dalam satu jadual dan melakukan pertanyaan kiraan. Sebagai contoh, Sarang> pilih kiraan (datapoint_id) dari dataPoint. Butuh 5-6 minit untuk mengira semua rekod (15-17 minit untuk 6.8 bilion rekod penuh).
  • Fasa pengurangan itu cepat, tetapi fasa peta memerlukan 95% dari keseluruhan masa pemprosesan. Mereka menggunakan enam ( Kuad teras 4x ) sistem dengan RAM 24 GB (lebih kurang) di setiap sistem.
  • Walaupun setelah menambahkan lebih banyak mesin, mengubah ukuran blok HDFS (64 MB, 128 MB, 256 MB) dan mengubah banyak pemboleh ubah konfigurasi lain (io.mengurut.faktor, i.mengurut.mb), mereka tidak mendapat banyak kejayaan dalam mengurangkan masa untuk menyelesaikan kiraan.

Input dari Ahli Komuniti Hive:

Akhirnya, anggota komuniti Hive menyelamatkan dan memberikan pelbagai pandangan untuk menyelesaikan masalah dengan pelaksanaan Hive semasa mereka:

  • Mereka menyebut bahawa kelajuan membaca HDFS adalah lebih kurang 60 MB / s berbanding dengan 1GB / s sekiranya terdapat cakera tempatan, bergantung pada kapasiti rangkaian dan beban kerja pada NameNode.
  • Anggota mencadangkan bahawa 16 pemetaan akan diperlukan dalam sistem mereka sekarang agar sesuai dengan prestasi I / O dari tugas bukan Hadoop tempatan.
  • Mereka juga mencadangkan untuk mengurangkan ukuran berpecah untuk setiap mapper untuk menambah bilangandaripadapemetaan dan oleh itu, memberikan lebih banyak keseimbangan.
  • Akhirnya, anggota masyarakat memberitahu mereka untuk kiraan penggunaan (1) bukannya merujuk kepada mengira ( datapoint_id) . Ini kerana dalam kasus hitungan (1), tidak ada kolom rujukan dan oleh itu, tidak ada penyahmampatan dan deserialisasi yang berlaku semasa melakukan penghitungan.

Akhirnya, NASA dapat menyesuaikan kelompok Hive mereka sesuai dengan harapan mereka dengan mengambil kira semua cadangan yang diberikan oleh ahli komuniti Hive. Oleh itu, mereka dapat meminta berbilion baris hanya dalam 15 saat menggunakan konfigurasi sistem yang disebutkan di atas.

Tutorial Apache Hive: Senibina Hive dan Komponennya

Gambar berikut menerangkan Hive Architecture dan aliran di mana pertanyaan dihantarSarangdan akhirnya diproses menggunakan kerangka MapReduce:

Rajah : Tutorial Hive - Senibina Hive

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

  • Pelanggan Hive: Hive menyokong aplikasi yang ditulis dalam banyak bahasa seperti Java, C ++, Python dll menggunakan pemacu JDBC, Thrift dan ODBC. Oleh itu seseorang sentiasa boleh menulis aplikasi pelanggan sarang yang ditulis dalam bahasa pilihan mereka.
  • Perkhidmatan Hive: Apache Hive menyediakan pelbagai perkhidmatan seperti CLI, Web Interface dll untuk melakukan pertanyaan. Kami akan meneroka masing-masing di blog tutorial Hive ini.
  • Kerangka pemprosesan dan Pengurusan Sumber: Secara dalaman,Hive menggunakan kerangka Hadoop MapReduce sebagai enjin de facto untuk melaksanakan pertanyaan. adalah topik yang tersendiri dan oleh itu, tidak dibincangkan di sini.
  • Storan Teragih: Oleh kerana Hive dipasang di atas Hadoop, ia menggunakan HDFS yang mendasari untuk simpanan diedarkan. Anda boleh merujuk ke Blog HDFS untuk mengetahui lebih lanjut mengenainya.

Sekarang, mari kita meneroka dua komponen utama pertama dalam Hive Architecture:

1. Pelanggan Hive:

Apache Hive menyokong pelbagai jenis aplikasi klien untuk melakukan pertanyaan di Hive. Pelanggan ini boleh dikategorikan kepada tiga jenis:

  • Pelanggan Berjimat Cermat: Oleh kerana pelayan Hive didasarkan pada Apache Thrift, ia dapat melayani permintaan dari semua bahasa pengaturcaraan yang menyokong Thrift.
  • Pelanggan JDBC: Hive membenarkan aplikasi Java untuk menyambungnya menggunakan pemacu JDBC yang ditentukan dalam organisasi kelas.apache.hadoop.hive.jdbc.Pemandu Hive.
  • Pelanggan ODBC: Pemandu Hive ODBC membenarkan aplikasi yang menyokong protokol ODBC untuk menyambung ke Hive. (Seperti pemacu JDBC, pemacu ODBC menggunakan Thrift untuk berkomunikasi dengan pelayan Hive.)

2. Perkhidmatan Hive:

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

  • Hive CLI (Antaramuka Baris Perintah): Ini adalah shell lalai yang disediakan oleh Hive di mana anda boleh melaksanakan pertanyaan dan perintah Hive anda secara langsung.
  • Antara Muka Web Apache Hive: Selain dari antara muka baris perintah, Hive juga menyediakan GUI berasaskan web untuk melaksanakan pertanyaan dan perintah Hive.
  • Pelayan Hive: Pelayan Hive dibina di Apache Thrift dan oleh itu, juga disebut sebagai Pelayan Thrift yang membolehkan klien yang berlainan mengemukakan permintaan ke Hive dan mendapatkan hasil akhir.
  • Pemandu Apache Hive: Ia bertanggungjawab untuk menerima pertanyaan yang dihantar melalui antara muka CLI, UI web, Thrift, ODBC atau JDBC oleh pelanggan. Kemudian, pemacu menyampaikan pertanyaan ke penyusun di mana penghuraian, pemeriksaan jenis dan analisis semantik berlaku dengan bantuan skema yang ada di metastore. Pada langkah seterusnya, rencana logik yang dioptimumkan dihasilkan dalam bentuk DAG (Directed Acyclic Graph) tugas mengurangkan peta dan tugas HDFS. Akhirnya, mesin pelaksanaan melaksanakan tugas-tugas ini mengikut urutan kebergantungannya, menggunakan Hadoop.
  • Metastore: Anda boleh berfikir metastoresebagai repositori pusat untuk menyimpan semua maklumat metadata Hive. Had metadata merangkumi pelbagai jenis maklumat seperti struktur jadual dan partitionbersama dengan kolum, jenis kolom, serializer dan deserializer yang diperlukan untuk operasi Baca / Tulis pada data yang terdapat dalam HDFS. Kawasan metastoreterdiri daripada dua unit asas:
    • Perkhidmatan yang menyediakan metastoreakses ke otherPerkhidmatan Hive.
    • Penyimpanan cakera untuk metadata yang terpisah dari storan HDFS.

Sekarang, mari kita fahami cara berbeza untuk melaksanakan metastore Hivedi bahagian seterusnya Tutorial Sarang ini.

Tutorial Apache Hive: Konfigurasi Metastore

Metastore menyimpan maklumat data meta menggunakan RDBMS dan lapisan sumber terbuka ORM (Object Relational Model) yang disebut Data Nucleus yang mengubah perwakilan objek menjadi skema hubungan dan sebaliknya. Sebab untuk memilih RDBMS dan bukannya HDFS adalah untuk mencapai kependaman rendah. Kami dapat melaksanakan metastore dalam mengikuti tiga konfigurasi:

1. Metastore Terbenam:

Kedua-dua perkhidmatan metastore dan perkhidmatan Hive berjalan dalam JVM yang sama secara lalai menggunakan contoh Derby Database terbenam di mana metadata disimpan dalam cakera tempatan. Ini dipanggil konfigurasi metastore terbenam. Dalam kes ini, hanya satu pengguna yang dapat menyambung ke pangkalan data metastore pada satu masa. Sekiranya anda memulakan contoh kedua pemandu Hive, anda akan mendapat ralat. Ini bagus untuk pengujian unit, tetapi bukan untuk penyelesaian praktikal.

2. Metastore tempatan:

Konfigurasi ini membolehkan kita mengadakan beberapa sesi Hive iaitu beberapa pengguna boleh menggunakan pangkalan data metastore pada masa yang sama. Ini dicapai dengan menggunakan pangkalan data yang mematuhi JDBC seperti MySQL yang berjalan di JVM yang terpisah atau mesin yang berbeza daripada perkhidmatan Hive dan perkhidmatan metastore yang berjalan di JVM yang sama seperti yang ditunjukkan di atas. Secara umum, pilihan yang paling popular adalah dengan melaksanakan pelayan MySQL sebagai pangkalan data metastore.

3. Metastore Jauh:

Dalam konfigurasi metastore jarak jauh, perkhidmatan metastore berjalan pada JVM tersendiri dan bukan di JVM perkhidmatan Hive. Proses lain berkomunikasi dengan pelayan metastore menggunakan API Rangkaian Thrift. Anda boleh mempunyai satu atau lebih pelayan metastore dalam kes ini untuk menyediakan lebih banyak ketersediaan.Kelebihan utama menggunakan metastore jauh adalah anda tidak perlu berkongsi bukti log masuk JDBC dengan setiap pengguna Hive untuk mengakses pangkalan data metastore.

Tutorial Apache Hive: Model Data

Data di Hive dapat dikategorikan kepada tiga jenis pada tahap butiran:

  • Jadual
  • Partition
  • Baldi

Jadual:

Jadual di Hive adalah sama dengan jadual yang terdapat dalam Pangkalan Data Relasional. Anda boleh melakukan operasi penapis, projek, bergabung dan kesatuan pada mereka. Terdapat dua jenis jadual di Hive:

cara menggunakan meja kerja mysql

1. Jadual Terurus:

Perintah:

BUAT JADUAL (type_ data_ type, column2 data_type)

LOAD DATA INPATH INTO jadual diuruskan_tabel

Seperti namanya (jadual terurus), Hive bertanggungjawab untuk menguruskan data jadual yang diuruskan. Dengan kata lain, yang saya maksud dengan mengatakan, 'Hive mengelola data', adalah jika anda memuatkan data dari file yang ada di HDFS ke dalam Hive Jadual Terurus dan mengeluarkan arahan DROP di atasnya, jadual beserta metadata akan dihapuskan. Jadi, data kepunyaan yang dijatuhkan meja_pengurusan tidak lagi wujud di mana-mana dalam HDFS dan anda tidak dapat mengambilnya dengan cara apa pun. Pada dasarnya, anda memindahkan data semasa mengeluarkan arahan LOAD dari lokasi fail HDFS ke direktori gudang Hive.

Catatan: Laluan lalai direktori gudang ditetapkan ke / user / hive / warehouse. Data jadual Hive terdapat di warehouse_directory / table_name (HDFS). Anda juga boleh menentukan laluan direktori gudang dalam parameter konfigurasi hive.metastore.warehouse.dir yang terdapat di hive-site.xml.

2. Jadual Luar:

Perintah:

BUAT JADUAL LUARAN (type_ data_ type, column2 data_type) LOCATION ''

LOAD DATA INPATH '' KE DALAM JADUAL

Untuk jadual luaran , Hive tidak bertanggungjawab menguruskan data. Dalam kes ini, apabila anda mengeluarkan arahan LOAD, Hive memindahkan data ke direktori gudangnya. Kemudian, Hive membuat maklumat metadata untuk jadual luaran. Sekarang, jika anda mengeluarkan arahan DROP pada jadual luaran , hanya maklumat metadata mengenai jadual luaran yang akan dihapuskan. Oleh itu, anda masih boleh mendapatkan kembali data dari jadual luaran itu dari direktori gudang menggunakan arahan HDFS.

Partition:

Perintah:

BUAT JADUAL table_name (type1 data_type, column2 data_type) PARTITIONED BY (partition1 data_type, partition2 data_type, & hellip.)

Hive menyusun jadual menjadi partition untuk mengelompokkan jenis data yang serupa berdasarkan kolum atau kunci partition. Setiap Jadual boleh mempunyai satu atau lebih kunci partition untuk mengenal pasti partition tertentu. Ini membolehkan kita mempunyai pertanyaan yang lebih pantas pada potongan data.

Catatan: Ingat, kesalahan yang paling biasa dilakukan semasa membuat partisi adalah menentukan nama lajur yang ada sebagai lajur partisi. Semasa melakukannya, anda akan menerima ralat - 'Kesalahan dalam analisis semantik: Lajur diulang dalam partisi lajur'.

Mari kita fahami partisi dengan mengambil contoh di mana saya mempunyai jadual pelajar_keterangan yang mengandungi maklumat pelajar beberapa kolej kejuruteraan seperti student_id, name, department, year, dll. Sekarang, jika saya melakukan partition berdasarkan bahagian jabatan, maklumat semua pelajar kepunyaan jabatan tertentu akan disimpan bersama dalam partisi itu. Secara fizikal, partisi tidak lain hanyalah sub-direktori dalam direktori jadual.

Katakan kita mempunyai data untuk tiga jabatan dalam jadual maklumat_pelajar kami - CSE, ECE dan Civil. Oleh itu, kami akan mempunyai tiga partisi secara keseluruhan untuk setiap jabatan seperti yang ditunjukkan dalam gambar di bawah. Dan, untuk setiap jabatan kami akan memiliki semua data mengenai departemen itu yang berada di sub-direktori yang terpisah di bawah direktori tabel Hive. Sebagai contoh, semua data pelajar mengenai jabatan CSE akan disimpan di user / hive / warehouse / student_details / dept. = CSE. Oleh itu, pertanyaan mengenai pelajar CSE hanya perlu melihat data yang terdapat dalam partition CSE. Ini menjadikan partition sangat berguna kerana mengurangkan latensi pertanyaan dengan mengimbas sahaja relevan data berpartisi dan bukannya keseluruhan kumpulan data. Sebenarnya, dalam pelaksanaan dunia nyata, anda akan berhadapan dengan ratusan TB data. Jadi, bayangkan mengimbas sejumlah besar data ini untuk beberapa pertanyaan di mana 95% data yang diimbas oleh anda tidak berkaitan dengan pertanyaan anda.

Saya mencadangkan anda untuk membaca blog di Perintah Hive di mana anda akan menemui pelbagai cara untuk melaksanakan partisi dengan contoh.

jumlah digit nombor dalam java menggunakan gelung

Baldi:

Perintah:

BUAT JADUAL table_name PARTITIONED BY (partition1 data_type, partition2 data_type, & hellip.) CLUSTERED BY (column_name1, column_name2,…) DIISTIKKAN OLEH (kolom_nama [ASC | DESC],…)] KE DALAM NOMBOR BAKET

Sekarang, anda boleh membahagikan setiap partisi atau jadual yang tidak dibahagikan kepada Bucket berdasarkan fungsi hash lajur dalam jadual. Sebenarnya, setiap baldi hanyalah fail dalam direktori partisi atau direktori jadual (jadual tidak dipartisi). Oleh itu, jika anda telah memilih untuk membahagi partisi menjadi n bucket, anda akan mempunyai fail n di setiap direktori partition anda. Sebagai contoh, anda dapat melihat gambar di atas di mana kita telah membungkus setiap partisi menjadi 2 baldi. Oleh itu, setiap partisi, katakanlah CSE, akan mempunyai dua fail di mana masing-masing akan menyimpan data pelajar CSE.

Bagaimana Hive mengedarkan baris ke dalam baldi?

Baiklah, Hive menentukan nombor baldi untuk satu baris dengan menggunakan formula: hash_function (bucketing_column) modulo (num_of_buckets) . Di sini, hash_fungsi bergantung pada jenis data lajur. Sebagai contoh, jika anda membuat jadual berdasarkan beberapa lajur, katakan user_id, dari jenis data INT, fungsi hash_ adalah - hash_fungsi (user_id ) = nilai integer dari user_id . Dan, andaikan anda telah membuat dua baldi, maka Hive akan menentukan baris yang akan masuk ke baldi 1 di setiap partisi dengan mengira: (nilai user_id) modulo (2). Oleh itu, dalam kes ini, baris yang mempunyai user_id yang diakhiri dengan digit bilangan bulat genap akan berada dalam baldi yang sama dengan setiap partisi. Fungsi hash_ untuk jenis data lain agak rumit untuk dikira dan sebenarnya, untuk rentetan ia bahkan tidak dapat dikenali oleh manusia.

Catatan: Sekiranya anda menggunakan Apache Hive 0.x atau 1.x, anda harus mengeluarkan perintah - set hive.enforce.bucketing = true dari terminal Hive anda sebelum melakukan bucket. Ini akan membolehkan anda mempunyai bilangan pengurang yang betul semasa menggunakan klausa dengan klausa untuk membuat lajur. Sekiranya anda belum melakukannya, anda mungkin mendapati jumlah fail yang telah dihasilkan dalam direktori meja anda tidak sama dengan jumlah baldi. Sebagai alternatif, anda juga boleh menetapkan bilangan pengurang sama dengan bilangan baldi dengan menggunakan set mapred.reduce.task = num_bucket.

Mengapa kita memerlukan baldi?

Terdapat dua sebab utama untuk melakukan bucket ke partition:

  • KE sebelah peta bergabung memerlukan data milik kunci bergabung unik untuk hadir dalam partisi yang sama. Tetapi bagaimana dengan kes-kes di mana kunci partition anda berbeza daripada bergabung? Oleh itu, dalam kes ini, anda boleh melakukan gabungan sisi peta dengan membungkus meja menggunakan kunci bergabung.
  • Bucket menjadikan proses pensampelan lebih efisien dan oleh itu, membolehkan kita mengurangkan masa pertanyaan.

Saya ingin menyimpulkan blog tutorial Hive ini di sini. Saya cukup yakin setelah melalui blog tutorial Hive ini, anda pasti menyedari kesederhanaan Apache Hive. Sejak itu, anda semua telah mempelajari semua asas Hive, sudah tiba masanya untuk mempunyai pengalaman dengan Apache Hive. Jadi, periksa blog seterusnya dalam siri blog Tutorial Hive ini yang berada di pemasangan Hive dan mulakan kerja di Apache Hive.

Sekarang setelah anda memahami Apache Hive dan ciri-cirinya, lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus Latihan Pensijilan Hadoop Data Besar Edureka membantu pelajar menjadi pakar dalam bidang HDFS, Benang, MapReduce, Babi, Hive, HBase, Oozie, Flume dan Sqoop menggunakan kes penggunaan masa nyata di domain Runcit, Media Sosial, Penerbangan, Pelancongan, Kewangan.

Ada soalan untuk kami? Sila sebutkan di bahagian komen dan kami akan menghubungi anda.