Video: Paradise or Oblivion 2024
Anda mungkin sudah tahu bahwa para ahli dalam pemodelan dan desain database relasional biasanya menghabiskan banyak waktu mereka merancang database yang dinormalisasi, atau skema <. Database normalisasi adalah teknik yang menjaga data kehilangan data, redundansi, dan anomali lainnya saat data diperbarui dan diambil. Para ahli mengikuti sejumlah peraturan untuk sampai pada database yang dinormalisasi, namun Aturan 1 adalah bahwa Anda harus menyelesaikan tabel
grup . (Satu meja besar yang menyimpan semua data Anda tidak normal - pun intended.) Ada pengecualian, tergantung pada kasus penggunaan, namun hukum dari banyak tabel umumnya diikuti secara ketat, terutama untuk database yang mendukung transaksi atau pemrosesan analitik (intelijen bisnis, sebagai contoh).
Apa kaitannya dengan bergabung di Hive? Nah, ingatlah bahwa sistem operasi yang mendasari untuk Hive adalah (surprise!) Apache Hadoop: MapReduce adalah mesin untuk bergabung dengan tabel, dan Hadoop File System (HDFS) adalah penyimpanan yang mendasarinya. Ini semua kabar baik bagi pengguna yang ingin membuat, mengelola, dan menganalisa tabel besar dengan Hive.
Ingat bahwa MapReduce dan HDFS dioptimalkan untuk throughput dengan analisis data yang besar dan bahwa, di dunia ini, latency - waktu respons pengguna, dengan kata lain - biasanya tinggi. Hive dirancang untuk pemrosesan analitik batch-style, bukan untuk pemrosesan transaksi online cepat. Pengguna yang menginginkan performa terbaik dengan SQL di Apache Hadoop memiliki solusi yang tersedia.
Karena tabel Hive dibaca dan ditulis melalui HDFS biasanya melibatkan kumpulan data yang sangat besar, semakin banyak data yang dapat Anda atur dalam satu tabel, semakin baik keseluruhan kinerja.
Akses disk dan jaringan jauh lebih lambat dari pada akses memori, sehingga meminimalkan HDFS membaca dan menulis sebanyak mungkin.
Dengan mengingat informasi latar belakang ini, Anda dapat mengatasi pembuatan bergabung dengan Sarang. Untungnya, komunitas pengembangan Hive realistis dan mengerti bahwa pengguna menginginkan dan perlu bergabung dengan tabel dengan HiveQL. Pengetahuan ini menjadi sangat penting dengan pembesaran EDW. Kasus penggunaan seperti arsip "queryable" sering kali memerlukan gabungan untuk analisis data.
Berikut adalah contoh join Hive menggunakan tabel data penerbangan. Daftar tersebut menunjukkan kepada Anda bagaimana membuat dan menampilkan tabel myflightinfo2007 dan tabel myflightinfo2008 dari tabel FlightInfo2007 dan FlightInfo2008 yang lebih besar. Rencananya sepanjang ini adalah dengan menggunakan tabel CTC dibuat myflightinfo2007 dan myflightinfo2008 untuk menggambarkan bagaimana Anda dapat melakukan bergabung di Hive.
Angka tersebut menunjukkan hasil join batin dengan tabel myflightinfo2007 dan myflightinfo2008 menggunakan klien SQuirreL SQL.
Sarang mendukung
equi-joins, jenis gabungan tertentu yang hanya menggunakan perbandingan persamaan dalam predikat gabung. (ON m8 FlightNum = m7 FlightNum adalah salah satu contoh equi-join.) Pembanding lain seperti Kurang Dari (<) tidak didukung. Pembatasan ini hanya karena keterbatasan pada mesin MapReduce yang mendasarinya. Selain itu, Anda tidak dapat menggunakan OR dalam klausa ON. Angka tersebut menggambarkan contoh awal join batin dan dua tipe join Hive lainnya. Perhatikan bahwa Anda dapat mengonfirmasi hasil join batin dengan meninjau isi tabel myflight2007 dan myflight2008.
Gambar berikut menggambarkan bagaimana inner join bekerja menggunakan diagram Venn, jika Anda tidak terbiasa dengan teknik ini. Ide dasarnya di sini adalah bahwa join batin mengembalikan catatan yang cocok antara dua tabel. Jadi bergabung batin adalah alat analisis yang sempurna untuk menentukan penerbangan mana yang sama dari JFK (New York) ke ORD (Chicago) pada bulan Juli 2007 dan Juli 2008.
Mengoptimalkan Hive bergabung adalah topik hangat di komunitas Hive.. Untuk informasi lebih lanjut tentang teknik pengoptimalan saat ini, lihat halaman Optimalisasi Gabung di wiki Sarang.