Dalam hal RDD
ketekunan, apa perbedaan antara cache()
dan persist()
dalam percikan?
202
Dalam hal RDD
ketekunan, apa perbedaan antara cache()
dan persist()
dalam percikan?
Dengan cache()
, Anda hanya menggunakan tingkat penyimpanan default:
MEMORY_ONLY
untuk RDDMEMORY_AND_DISK
untuk DatasetDengan persist()
, Anda dapat menentukan tingkat penyimpanan yang Anda inginkan untuk RDD dan Dataset .
Dari dokumen resmi:
- Anda dapat menandai
RDD
untuk tetap menggunakan metodepersist
() ataucache
() di atasnya.- masing-masing bertahan
RDD
dapat disimpan menggunakan yang berbedastorage level
- Metode
cache
() adalah singkatan untuk menggunakan tingkat penyimpanan default, yaituStorageLevel.MEMORY_ONLY
(menyimpan objek yang di-deserialisasi dalam memori).
Gunakan persist()
jika Anda ingin menetapkan tingkat penyimpanan selain dari:
MEMORY_ONLY
ke RDDMEMORY_AND_DISK
untuk DatasetTautan menarik untuk dokumentasi resmi: tingkat penyimpanan mana yang harus dipilih
cache()
sekarang gunakan MEMORY_AND_DISKMEMORY_AND_DISK
adalah nilai default hanya untuk Kumpulan Data.MEMORY_ONLY
masih merupakan nilai default untuk RDDlihat lebih detail di sini ...
Caching atau persistensi adalah teknik optimisasi untuk perhitungan Spark (iteratif dan interaktif). Mereka membantu menyimpan hasil sebagian sementara sehingga dapat digunakan kembali pada tahap berikutnya. Dengan demikian, hasil sementara
RDD
ini disimpan dalam memori (default) atau penyimpanan yang lebih solid seperti disk dan / atau direplikasi.RDD
s dapat di-cache menggunakancache
operasi. Mereka juga dapat bertahan menggunakanpersist
operasi.Peringatan -Cache dengan bijaksana ... lihat ( (Mengapa) kita perlu memanggil cache atau tetap menggunakan RDD )
Hanya karena Anda dapat men-cache
RDD
dalam memori tidak berarti Anda harus melakukannya secara membabi buta. Bergantung pada berapa kali dataset diakses dan jumlah pekerjaan yang terlibat dalam melakukannya, perhitungan ulang bisa lebih cepat daripada harga yang dibayarkan oleh tekanan memori yang meningkat.Seharusnya tidak perlu dikatakan bahwa jika Anda hanya membaca dataset setelah tidak ada gunanya menyimpannya, itu sebenarnya akan membuat pekerjaan Anda lebih lambat. Ukuran dataset yang di-cache dapat dilihat dari Spark Shell ..
Varian Cantuman ...
* Lihat contoh di bawah ini: *
Catatan: Karena perbedaan sintaksis yang sangat kecil dan murni antara caching dan persistensi
RDD
, kedua istilah ini sering digunakan secara bergantian.Lihat lebih banyak di sini ....
Tetap ada di memori dan disk:
Cache
Caching dapat meningkatkan kinerja aplikasi Anda secara luas.
sumber
Tidak ada perbedaan. Dari
RDD.scala
.sumber
Spark memberikan 5 jenis tingkat Penyimpanan
MEMORY_ONLY
MEMORY_ONLY_SER
MEMORY_AND_DISK
MEMORY_AND_DISK_SER
DISK_ONLY
cache()
akan digunakanMEMORY_ONLY
. Jika Anda ingin menggunakan sesuatu yang lain, gunakanpersist(StorageLevel.<*type*>)
.Secara default
persist()
akan menyimpan data di tumpukan JVM sebagai objek yang tidak di-serialisasi.sumber
Cache () dan bertahan () kedua metode digunakan untuk meningkatkan kinerja perhitungan percikan. Metode ini membantu untuk menyimpan hasil antara sehingga dapat digunakan kembali pada tahap berikutnya.
Satu-satunya perbedaan antara cache () dan bertahan () adalah, dengan menggunakan teknik Cache kita dapat menyimpan hasil antara dalam memori hanya bila diperlukan sementara di Persist () kita dapat menyimpan hasil antara dalam 5 tingkat penyimpanan (MEMORY_ONLY, MEMORY_AND_DISK, MEMORY_ONLY_SER, MEMORY_AND_DISK_SER, DISK_ONLY).
sumber