Demystifying Partitioning di Spark



Blog ini memberi tahu Anda semua yang perlu Anda ketahui tentang partisi di Spark, jenis partisi & bagaimana hal itu meningkatkan kecepatan eksekusi untuk transformasi berbasis kunci.

Kontribusi Prithviraj Bose

Spark Set Data Terdistribusi Tangguh (abstraksi pemrograman) dievaluasi secara malas dan transformasi disimpan sebagai grafik asiklik terarah (DAG). Jadi setiap tindakan di RDD akan membuat Spark menghitung ulang DAG. Ini adalah bagaimana ketahanan diperoleh di Spark karena jika ada node pekerja yang gagal maka DAG hanya perlu dihitung ulang.





Itu juga wajib untuk cache (tetap dengan tingkat penyimpanan yang sesuai) RDD sedemikian rupa sehingga tindakan yang sering dilakukan pada RDD tidak memaksa Spark untuk menghitung ulang DAG.Topik yang dibahas dalam blog ini pada dasarnya diperlukan untuk Apache Spark dan Sertifikasi Scala. Topik yang dibahas dalam blog ini pada dasarnya diperlukan untuk .

Mengapa Menggunakan Partisi?

Dalam komputasi cluster, tantangan utamanya adalah meminimalkan lalu lintas jaringan. Jika data berorientasi nilai kunci, pemartisian menjadi penting karena untuk transformasi selanjutnya di RDD, ada cukup banyak pengacakan data di seluruh jaringan. Jika kunci atau rentang kunci yang serupa disimpan di partisi yang sama maka pengacakan diminimalkan dan pemrosesan menjadi sangat cepat.



Transformasi yang memerlukan pengacakan data di seluruh node pekerja sangat diuntungkan dari partisi. Transformasi seperti itu cogroup, groupWith, join, leftOuterJoin, rightOuterJoin, groupByKey, reduceByKey, menggabungkanByKey dan Lihatlah .

Partisi dapat dikonfigurasi asalkan RDD berbasis nilai kunci.

Properti Partisi

  1. Tupel di partisi yang sama dijamin berada di mesin yang sama.
  2. Setiap node dalam cluster dapat berisi lebih dari satu partisi.
  3. Jumlah total partisi dapat dikonfigurasi, secara default diatur ke jumlah total inti pada semua node pelaksana.

Jenis Partisi di Spark

Spark mendukung dua jenis partisi,

  • Partisi Hash : Menggunakan Java Object.hashCode metode untuk menentukan partisi sebagai partisi = key.hashCode ()% numPartitions.

hash-partitioning-demystifying-partitioning-in-spark



  • Rentang Partisi : Menggunakan rentang untuk mendistribusikan ke masing-masing partisi kunci yang termasuk dalam rentang. Metode ini cocok di mana terdapat urutan alami pada kunci dan kunci tidak negatif. Potongan kode di bawah ini menunjukkan penggunaan pemartisi jangkauan.

Contoh Kode

Mari kita lihat contoh tentang cara mempartisi data di seluruh node pekerja. Kode Scala lengkap tersedia sini .

Berikut beberapa data uji 12 koordinat (sebagai tupel),

Buat org.apache.spark.HashPartitioner berukuran 2, di mana kunci akan dipartisi di dua partisi ini berdasarkan kode hash dari kunci.

Kemudian kita dapat memeriksa pasangan dan melakukan berbagai transformasi berbasis kunci seperti foldByKey dan reduceByKey.

Meringkas, partisi sangat meningkatkan kecepatan eksekusi untuk transformasi berbasis kunci.

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

Posting terkait:

Mengapa Anda Harus Mempelajari Spark Setelah Menguasai Hadoop

tutorial alat talend etl pdf

Apache Spark Vs Hadoop MapReduce