Rumah pangkalan data tutorial mysql Hadoop的Map-side join和Reduce-side join

Hadoop的Map-side join和Reduce-side join

Jun 07, 2016 pm 04:37 PM
hadoop join

Hadoop中连接(join)操作很常见,Hadoop“连接”的概念本身,和SQL的“连接”是一致的。SQL的连接,在维基百科中已经说得非常清楚。比如dataset A是关于用户个人信息的,key是用户id,value是用户姓名等等个人信息;dataset B是关于用户交易记录的,key是用

Hadoop的Map side join和Reduce side join

Hadoop中连接(join)操作很常见,Hadoop“连接”的概念本身,和SQL的“连接”是一致的。SQL的连接,在维基百科中已经说得非常清楚。比如dataset A是关于用户个人信息的,key是用户id,value是用户姓名等等个人信息;dataset B是关于用户交易记录的,key是用户id,value是用户的交易历史等信息。我们当然可以对这两者以共同键用户id为基准来连接两边的数据。

首先,在一切开始之前,先确定真的需要使用Hadoop的连接操作吗?

如果要把两个数据集合放到一起操作,Hadoop还提供了Side Data Distribution(data sharing)的方式,这种方式对于小数据量的情况下效率要高得多,说白了就是把某些数据缓存到本地,例如在本地内存中,直接操作执行,具体包括两种子方式:

  • 使用Job Configuration传递;
  • 使用Distributed Cache。

当数据量比较大时,是不适合采用Side Data Distribution的,这时候就需要考虑Join了。

Map-side Join

Map-side Join会将数据从不同的dataset中取出,连接起来并放到相应的某个Mapper中处理,因此key相同的数据肯定会在同一个Mapper里面一起得到处理的。如果Mapper前dataset中的数据是无序的,那么对于dataset A的任意一个key,要到其它的dataset中寻找该key对应的数据,造成的复杂度是n的x次方,x等于dataset的个数。因此要求dataset是有序的,这样每个对于任何一个Mapper来说,每一个dataset都只需要遍历一次就可以取到所有需要的数据。Map-side Join对dataset的限制很多,进入不仅仅是有序,不同的dataset中数据的partition方式也要一致,其实最终目的就是保证同样key的数据同时进入一个Mapper。

Hadoop的Map side join和Reduce side join

Reduce-side Join

Reduce-side Join原理上要简单得多,它也不能保证相同key但分散在不同dataset中的数据能够进入同一个Mapper,整个数据集合的排序在Mapper之后的shuffle过程中完成。相对于Map-side Join,它不需要每个Mapper都去读取所有的dataset,这是好处,但也有坏处,即这样一来Mapper之后需要排序的数据集合会非常大,因此shuffle阶段的效率要低于Map-side Join。如果希望在shuffle之后,进入Reducer的时候,value列表是有序的,那么就需要使用Hadoop的Secondary Sort(移步此文)。

Hadoop的Map side join和Reduce side join

不管使用Map-side Join还是Reduce-side Join,都要求进行Join的数据满足某一抽象,这个抽象类型即为进入Mapper或者Reducer的input key的类型。

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接《四火的唠叨》

你可能也喜欢:

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan JOIN dalam MySql Cara menggunakan JOIN dalam MySql Jun 04, 2023 am 08:02 AM

Maksud JOIN sama seperti perkataan Inggeris "join". Ia bergabung dengan dua jadual dan boleh dibahagikan secara kasar kepada inner join, outer join, right join, left join dan natural join. Mula-mula buat dua jadual, berikut digunakan sebagai contoh CREATETABLEt_blog(idINTPRIMARYKEYAUTO_INCREMENT,titleVARCHAR(50),typeIdINT);SELECT*FROMt_blog;+----+------+--------+ |. id|tajuk|typeId|+----+-------+--------+|1|aaa|1||2|bbb|2||3|ccc|3 |

Ralat Java: Ralat Hadoop, Cara Mengendalikan dan Mengelak Ralat Java: Ralat Hadoop, Cara Mengendalikan dan Mengelak Jun 24, 2023 pm 01:06 PM

Ralat Java: Ralat Hadoop, Cara Mengendalikan dan Mengelak Apabila menggunakan Hadoop untuk memproses data besar, anda sering menghadapi beberapa ralat pengecualian Java, yang mungkin menjejaskan pelaksanaan tugas dan menyebabkan pemprosesan data gagal. Artikel ini akan memperkenalkan beberapa ralat Hadoop biasa dan menyediakan cara untuk menangani dan mengelakkannya. Java.lang.OutOfMemoryErrorOutOfMemoryError ialah ralat yang disebabkan oleh memori mesin maya Java yang tidak mencukupi. Apabila Hadoop adalah

Apakah prinsip penggunaan MySQL Join? Apakah prinsip penggunaan MySQL Join? May 26, 2023 am 10:07 AM

Join type leftjoin menggunakan jadual kiri sebagai jadual pemanduan dan jadual kiri sebagai asas set hasil Data dari jadual kanan disambungkan kepada set hasil kanan sebagai jadual pemanduan dan jadual kanan sebagai asas set hasil untuk menyambungkan jadual kiri Data ditambah kepada set hasil innerjoin Set keputusan mengambil persilangan dua jadual fulljoin fulljoin. Kesatuan menggantikan kesatuan. Perbezaan antara kesatuan dan kesatuan adalah bahawa kesatuan akan menyahduplikasi produk Cartesian crossjoin mencipta set hasil, ia akan diluluskan mengikut syarat.

Menggunakan Hadoop dan HBase dalam Beego untuk penyimpanan data besar dan pertanyaan Menggunakan Hadoop dan HBase dalam Beego untuk penyimpanan data besar dan pertanyaan Jun 22, 2023 am 10:21 AM

Dengan kemunculan era data besar, pemprosesan dan penyimpanan data menjadi semakin penting, dan cara mengurus dan menganalisis sejumlah besar data dengan cekap telah menjadi cabaran bagi perusahaan. Hadoop dan HBase, dua projek Yayasan Apache, menyediakan penyelesaian untuk penyimpanan dan analisis data besar. Artikel ini akan memperkenalkan cara menggunakan Hadoop dan HBase dalam Beego untuk storan dan pertanyaan data besar. 1. Pengenalan kepada Hadoop dan HBase Hadoop ialah sistem storan dan pengkomputeran teragih sumber terbuka yang boleh

Cara menggunakan PHP dan Hadoop untuk pemprosesan data besar Cara menggunakan PHP dan Hadoop untuk pemprosesan data besar Jun 19, 2023 pm 02:24 PM

Memandangkan jumlah data terus meningkat, kaedah pemprosesan data tradisional tidak lagi dapat menangani cabaran yang dibawa oleh era data besar. Hadoop ialah rangka kerja pengkomputeran teragih sumber terbuka yang menyelesaikan masalah kesesakan prestasi yang disebabkan oleh pelayan nod tunggal dalam pemprosesan data besar melalui storan teragih dan pemprosesan sejumlah besar data. PHP adalah bahasa skrip yang digunakan secara meluas dalam pembangunan web dan mempunyai kelebihan pembangunan pesat dan penyelenggaraan yang mudah. Artikel ini akan memperkenalkan cara menggunakan PHP dan Hadoop untuk pemprosesan data besar. Apa itu HadoopHadoop

Cara menggunakan JOIN dalam MySQL Cara menggunakan JOIN dalam MySQL Jun 03, 2023 am 09:30 AM

Pengenalan A unik + AB awam B unik + AB awam AB unik AB awam A unik B unik A unik + B unik + AB awam A unik + B unik Amalan mencipta jadual jabatan DROPTABLEIFEXISTS`dept`;CREATETABLE`dept`(`dept_id`int( 11)NOTNULLAUTO_INCREMENT,`dept_name`varchar(30)DEFAULTNULL,`dept_number`int(11)DEFAULTNULL,PRIMARYKEY(`dept_id`))ENGINE =InnoDBAUT

Terokai aplikasi Java dalam bidang data besar: pemahaman tentang Hadoop, Spark, Kafka dan tindanan teknologi lain Terokai aplikasi Java dalam bidang data besar: pemahaman tentang Hadoop, Spark, Kafka dan tindanan teknologi lain Dec 26, 2023 pm 02:57 PM

Timbunan teknologi data besar Java: Fahami aplikasi Java dalam bidang data besar, seperti Hadoop, Spark, Kafka, dll. Apabila jumlah data terus meningkat, teknologi data besar telah menjadi topik hangat dalam era Internet hari ini. Dalam bidang data besar, kita sering mendengar nama Hadoop, Spark, Kafka dan teknologi lain. Teknologi ini memainkan peranan penting, dan Java, sebagai bahasa pengaturcaraan yang digunakan secara meluas, juga memainkan peranan yang besar dalam bidang data besar. Artikel ini akan memberi tumpuan kepada aplikasi Java secara besar-besaran

Apakah pertanyaan menyertai mysql dan kaedah pertanyaan berbilang? Apakah pertanyaan menyertai mysql dan kaedah pertanyaan berbilang? Jun 02, 2023 pm 04:29 PM

Berbanding dengan pertanyaan sertai dan berbilang pertanyaan, yang manakah lebih cekap, pertanyaan berkaitan berbilang jadual MySQL atau pertanyaan berbilang jadual tunggal? Apabila jumlah data tidak cukup besar, tiada masalah menggunakan gabungan, tetapi ia biasanya dilakukan pada lapisan perkhidmatan Pertama: sumber pengkomputeran pangkalan data yang berdiri sendiri adalah sangat mahal, dan pangkalan data perlu menyediakan kedua-dua penulisan dan membaca pada masa yang sama, yang memerlukan penggunaan CPU Untuk membuat pangkalan data Daya tampung menjadi lebih tinggi, dan perniagaan tidak mengambil berat tentang jurang kelewatan ratusan mikrosaat hingga milisaat Perniagaan akan meletakkan lebih banyak pengiraan ke dalam lapisan perkhidmatan Lagipun, sumber pengkomputeran boleh dengan mudah dikembangkan secara mendatar, dan pangkalan data adalah sukar, jadi kebanyakan perniagaan akan meletakkan operasi pengkomputeran tulen ke dalam lapisan perkhidmatan, dan menggunakan pangkalan data sebagai sistem kv dengan keupayaan transaksi.

See all articles