Spark Accumulators dijelaskan: Apache Spark

Blog Apache Spark ini menerangkan pengumpul Spark secara terperinci. Pelajari penggunaan penumpuk Spark dengan contoh. Penumpuk bunga api seperti pembilang Hadoop Mapreduce.

Disumbangkan oleh Prithviraj Bose

Berikut adalah blog mengenai perkara yang perlu anda ketahui mengenai penumpuk Spark.Dengan Menjadi kemahiran utama yang dicari oleh kebanyakan perekrut IT, pertumbuhan dan permintaannya dalam industri telah berkembang pesat sejak awal.





Apa itu penumpuk?

Akumulator adalah pemboleh ubah yang digunakan untuk mengumpulkan maklumat di seluruh pelaksana. Sebagai contoh, maklumat ini boleh berkaitan dengan data atau diagnosis API seperti berapa banyak rekod yang rosak atau berapa kali API perpustakaan tertentu dipanggil.

Untuk memahami mengapa kita memerlukan penumpuk, mari kita lihat contoh kecil.



Inilah log transaksi khayalan rangkaian kedai di sekitar wilayah Kolkata tengah.

logs-Spark-accumulators

Terdapat 4 bidang,

apakah kaedah javascript

Padang 1 -> Bandar



Medan 2 -> Lokasi

Medan 3 -> Kategori barang yang dijual

Medan 4 -> Nilai barang yang dijual

Walau bagaimanapun, log boleh rosak. Sebagai contoh, baris kedua adalah baris kosong, baris keempat melaporkan beberapa masalah rangkaian dan akhirnya baris terakhir menunjukkan nilai jualan sifar (yang tidak mungkin berlaku!).

Kita dapat menggunakan akumulator untuk menganalisis log transaksi untuk mengetahui jumlah log kosong (garis kosong), berapa kali rangkaian gagal, produk apa pun yang tidak mempunyai kategori atau bahkan bilangan kali penjualan sifar direkodkan. Log sampel lengkap boleh didapati di sini .
Akumulator berlaku untuk setiap operasi yang,
1. Komutatif -> f (x, y) = f (y, x) , dan
2. Bersekutu -> f (f (x, y), z) = f (f (x, z), y) = f (f (y, z), x)
Sebagai contoh, jumlah dan maks fungsi memenuhi syarat di atas sedangkan rata-rata tidak.

Mengapa menggunakan Spark Accumulators?

Sekarang mengapa kita memerlukan penumpuk dan mengapa tidak hanya menggunakan pemboleh ubah seperti yang ditunjukkan dalam kod di bawah.

Masalah dengan kod di atas adalah apabila pemandu mencetak pemboleh ubah garisan kosong nilainya akan menjadi sifar. Ini kerana ketika Spark menghantar kod ini ke setiap pelaksana pemboleh ubah menjadi lokal kepada pelaksana itu dan nilai yang dikemas kini tidak diserahkan kembali ke pemacu. Untuk mengelakkan masalah ini kita perlu buat garisan kosong penumpuk sehingga semua kemas kini pemboleh ubah ini di setiap pelaksana diserahkan kembali ke pemacu. Jadi kod di atas harus ditulis sebagai,

Ini menjamin bahawa penumpuk garisan kosong dikemas kini di setiap pelaksana dan kemas kini disampaikan kembali ke pemacu.

Kami boleh melaksanakan kaunter lain untuk kesalahan rangkaian atau nilai jualan sifar, dll. Kod sumber lengkap bersama dengan pelaksanaan kaunter lain boleh didapati di sini .

Orang yang biasa dengan Hadoop Map-Reduce akan menyedari bahawa akumulator Spark serupa dengan kaunter Map-Reduce Hadoop.

Kaveat

Semasa menggunakan akumulator ada beberapa peringatan yang perlu kita perhatikan sebagai pengaturcara,

  1. Pengiraan di dalam transformasi dinilai dengan malas, jadi kecuali jika tindakan berlaku pada RDD the transformasi tidak dilaksanakan. Akibatnya, akumulator yang digunakan di dalam berfungsi seperti peta () atau penapis () tidak akan dilaksanakan kecuali beberapa tindakan berlaku pada RDD.
  2. Jaminan Spark untuk mengemas kini penumpuk dalam tindakan hanya sekali . Oleh itu, walaupun tugas dimulakan semula dan garis keturunan dikira semula, penumpuk akan dikemas kini sekali sahaja.
  3. Spark tidak menjamin ini transformasi . Oleh itu, jika tugas dimulakan semula dan garis keturunannya dikira semula, ada kemungkinan kesan sampingan yang tidak diingini apabila penumpuk akan dikemas kini lebih dari satu kali.

Untuk berada di sisi yang selamat, selalu gunakan akumulator dalam tindakan SAHAJA.
Kodnya di sini menunjukkan contoh yang mudah tetapi berkesan mengenai bagaimana mencapainya.
Untuk maklumat lebih lanjut mengenai penumpuk, baca ini .

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

Catatan berkaitan:

cara menghuraikan fail xml di java

Apache Spark menggabungkanByKey Dijelaskan