performance - আরডিডি তে পার্টিশনের সংখ্যা এবং স্পার্কে পারফরম্যান্স




apache-spark pyspark (2)

পাইপার্কে, আমি একটি তালিকা থেকে একটি আরডিডি তৈরি করতে পারি এবং কতগুলি পার্টিশন রাখতে হবে তা স্থির করতে পারি:

sc = SparkContext()
sc.parallelize(xrange(0, 10), 4)

পারফরম্যান্সকে প্রভাবিত করতে আমার আরডিডি বিভাজন করার সিদ্ধান্ত নিয়েছে এমন পার্টিশনের সংখ্যাটি কীভাবে? এবং এটি কীভাবে আমার মেশিনের কোর সংখ্যার উপর নির্ভর করে?


জাভদ্বার দুর্দান্ত উত্তরে যোগ করার জন্য, আমি ডকসগুলি স্মরণ করিয়ে দিচ্ছি যে আপনার পার্টিশনের সংখ্যাটি আপনার ক্লাস্টারে সিপিইউ কোরগুলির সংখ্যার 3 বা 4 গুণ নির্ধারণ করার জন্য সুপারিশ করেছেন যাতে উপলব্ধ সিপিইউ কোরের মধ্যে কাজটি আরও সমানভাবে বিতরণ করা যায়। অর্থ, যদি ক্লাস্টারে আপনার কেবলমাত্র সিপিইউ কোর প্রতি 1 টি পার্টিশন থাকে তবে আপনাকে এক দীর্ঘতম চলমান টাস্কটি সম্পন্ন করার জন্য অপেক্ষা করতে হবে তবে আপনি যদি এটিটি আরও ভেঙে ফেলেছেন তবে সন্ধ্যা হয়ে যাওয়ার কারণে কাজের চাপ আরও সমানভাবে ভারসাম্যপূর্ণ হবে be ।


পার্টিশনের সংখ্যা স্পার্ক কোডের কার্যকারিতা উপর উচ্চ প্রভাব ফেলে। আদর্শভাবে স্পার্ক পার্টিশনটি বোঝায় যে আপনি কতটা ডেটা বদল করতে চান। সাধারনত আপনার এই প্যারামিটারটি আপনার শাফল আকার (শ্যাফেল রিড রাইটিং) এ সেট করা উচিত এবং আপনি সর্বোচ্চ পারফরম্যান্স অর্জনের জন্য পার্টিশনটিতে 128 থেকে 256 এমবি পার্টিশনের সংখ্যা নির্ধারণ করতে পারেন than

সম্পত্তিটি: spark.sql.shuffle.partitions হিসাবে সেট করে আপনি আপনার স্পার্ক এসকিএল কোডে পার্টিশন সেট করতে পারেন বা কোনও ডেটা ফ্রেম ব্যবহার করার সময় আপনি বেলো দ্বারা সেট করতে পারেন: df.repartition (numOfPartitions)







rdd