উত্তর:
এর সাথে cache(), আপনি কেবলমাত্র ডিফল্ট স্টোরেজ স্তরটি ব্যবহার করেন:
MEMORY_ONLYআরডিডির জন্যMEMORY_AND_DISKডেটাসেটের জন্যএর সাথে persist()আপনি আরডিডি এবং ডেটাসেট উভয়ের জন্য কোন স্টোরেজ স্তরটি চান তা নির্দিষ্ট করতে পারেন ।
অফিসিয়াল ডক্স থেকে:
- আপনি এটিতে () বা () পদ্ধতি
RDDব্যবহার করে অবিরত থাকতে চিহ্নিত করতে পারেন ।persistcache- প্রতিটি জেদী
RDDআলাদা ব্যবহার করে সংরক্ষণ করা যায়storage levelcache() মেথড ডিফল্ট স্টোরেজ স্তর, যা ব্যবহার করার জন্য একটি সাঁটে লেখার হয়StorageLevel.MEMORY_ONLY(স্টোর মেমরি বস্তু deserialized)।
persist()আপনি যদি কোনও স্টোরেজ স্তর নির্ধারণ করতে চান তবে ব্যবহার করুন :
MEMORY_ONLYথেকে RDDMEMORY_AND_DISK জন্যঅফিসিয়াল ডকুমেন্টেশনের জন্য আকর্ষণীয় লিঙ্ক: কোন স্টোরেজ স্তরটি চয়ন করতে হবে
MEMORY_AND_DISKশুধুমাত্র ডেটাসেটের জন্য ডিফল্ট মান। MEMORY_ONLYএখনও RDD জন্য ডিফল্ট মান
cacheএবংpersistঅপারেশন মধ্যে পার্থক্য নিখুঁত বাক্য গঠনমূলক। ক্যাশে হ'ল স্থির বা স্থির হওয়া (MEMORY_ONLY) এর সমার্থক শব্দ , অর্থাৎcacheকেবলমাত্রpersistডিফল্ট স্টোরেজ স্তরের সাথে থাকেMEMORY_ONLY
/ ** * ডিফল্ট স্টোরেজ স্তর (
MEMORY_ONLY) এর সাথে এই আরডিডি রাখুন । * /
ডিফ অব্যাহত থাকে (): এই.টি টাইপ = অব্যাহত থাকে (স্টোরেজলিভেল.মেমোরওয়াইথলয়)/ ** * ডিফল্ট স্টোরেজ স্তর (
MEMORY_ONLY) এর সাথে এই আরডিডি রাখুন । * /
ডিফ ক্যাশে (): এটি.প্রকার = অবিরত ()
আরও বিশদ এখানে দেখুন ...
ক্যাচিং বা অধ্যবসায় হ'ল (পুনরাবৃত্ত এবং ইন্টারেক্টিভ) স্পার্ক গণনার জন্য অপ্টিমাইজেশন কৌশল techniques তারা অন্তর্বর্তী আংশিক ফলাফল সংরক্ষণে সহায়তা করে যাতে পরবর্তী পর্যায়ে এগুলি পুনরায় ব্যবহার করা যায়। এই হিসাবে অন্তর্বর্তীকালীন ফলাফলগুলি RDDস্মৃতিতে (ডিফল্ট) বা আরও শক্ত স্টোরেজ যেমন ডিস্ক এবং / অথবা প্রতিলিপি করা হয়।
অপারেশন RDDব্যবহার cacheকরে ক্যাশে করা যায়। persistঅপারেশন ব্যবহার করেও তাদের ধরে রাখা যায় ।
persist,cacheএই ফাংশনগুলি এ এর স্টোরেজ স্তরটি সামঞ্জস্য করতে ব্যবহার করা যেতে পারে
RDD। মেমরি মুক্ত করার সময়, স্পার্ক কোন পার্টিশন রাখতে হবে তা সিদ্ধান্ত নিতে স্টোরেজ স্তর সনাক্তকারী ব্যবহার করবে। প্যারামিটার কম ভেরিয়েন্টpersist() এবংcache() কেবল এর জন্য সংক্ষিপ্ত বিবরণpersist(StorageLevel.MEMORY_ONLY).সতর্কতা : একবার স্টোরেজ স্তর পরিবর্তন করা হয়েছে, এটি আবার পরিবর্তন করা যাবে না!
আপনি কেবল RDDস্মৃতিতে ক্যাশে রাখতে পারেন তার অর্থ এই নয় যে আপনার অন্ধভাবে এটি করা উচিত। ডেটাসেটটি কতবার অ্যাক্সেস করা হয় এবং এটি করার সাথে জড়িত কাজের পরিমাণের উপর নির্ভর করে বর্ধিত মেমরি চাপের দ্বারা প্রদত্ত দামের তুলনায় পুনরুক্তি দ্রুততর হতে পারে।
এটি বলার অপেক্ষা রাখে না যে আপনি যদি একবার কেবলমাত্র একটি ডেটাসেট পড়েন তবে এটির ক্যাশে করার কোনও অর্থ নেই, এটি আসলে আপনার কাজটিকে ধীর করে দেবে। ক্যাশেড ডেটাসেটের আকারটি স্পার্ক শেল থেকে দেখা যায় ..
তালিকা বৈকল্পিক ...
def cache(): RDD[T]
def persist(): RDD[T]
def persist(newLevel: StorageLevel): RDD[T]
* নীচের উদাহরণ দেখুন: *
val c = sc.parallelize(List("Gnu", "Cat", "Rat", "Dog", "Gnu", "Rat"), 2)
c.getStorageLevel
res0: org.apache.spark.storage.StorageLevel = StorageLevel(false, false, false, false, 1)
c.cache
c.getStorageLevel
res2: org.apache.spark.storage.StorageLevel = StorageLevel(false, true, false, true, 1)
দ্রষ্টব্য: ক্যাশে এবং অধ্যবসায়ের অধ্যবসায়ের মধ্যে খুব ছোট এবং খাঁটি সিনট্যাকটিক পার্থক্যের কারণে RDDদুটি পদটি প্রায়শই পরস্পরের পরিবর্তে ব্যবহৃত হয়।
এখানে আরও চাক্ষুষভাবে দেখুন ....
স্মৃতি এবং ডিস্কে স্থির থাকে:
ক্যাশিং আপনার আবেদনের কার্যকারিতা অনেকাংশে উন্নত করতে পারে।
এখানে কোন পার্থক্য নেই. থেকে RDD.scala।
/** Persist this RDD with the default storage level (`MEMORY_ONLY`). */
def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)
/** Persist this RDD with the default storage level (`MEMORY_ONLY`). */
def cache(): this.type = persist()
স্পার্ক 5 ধরণের স্টোরেজ স্তর দেয়
MEMORY_ONLYMEMORY_ONLY_SERMEMORY_AND_DISKMEMORY_AND_DISK_SERDISK_ONLYcache()ব্যবহার করবে MEMORY_ONLY। আপনি যদি অন্য কিছু ব্যবহার করতে চান তবে ব্যবহার করুন persist(StorageLevel.<*type*>)।
ডিফল্টরূপে persist()JVM হিপে ডেবিহীন অবজেক্ট হিসাবে সংরক্ষণ করবে।
ক্যাশে () এবং অব্যাহত রাখুন () উভয় পদ্ধতিই স্পার্ক গণনার কর্মক্ষমতা উন্নত করতে ব্যবহৃত হয়। এই পদ্ধতিগুলি মধ্যবর্তী ফলাফলগুলি সংরক্ষণে সহায়তা করে যাতে পরবর্তী পর্যায়ে এগুলি পুনরায় ব্যবহার করা যায়।
ক্যাশে () এবং অব্যাহত () এর মধ্যে কেবলমাত্র পার্থক্য হ'ল, ক্যাশে কৌশল ব্যবহার করে আমরা কেবল তখনই প্রয়োজন মেমরিতে মধ্যবর্তী ফলাফলগুলি সংরক্ষণ করতে পারি যখন প্রয়োজন থাকা অবস্থায় () আমরা মধ্যবর্তী ফলাফলগুলি সংরক্ষণ করতে পারি 5 টি স্টোরেজ স্তরগুলিতে (MEMORY_ONLY, MEMORY_AND_DISK, MEMORY_ONLY_SER, MEMORY_AND_DISK_SER, DISK_ONLY)।
cache()এখন MEMORY_AND_DISK