python - পান্ডার তুলনায় আপাচি-স্পার্ক-পাইথন স্থানীয়ভাবে এত ধীর কেন?



pandas apache-spark (1)

একটি স্পার্ক নবাগত এখানে। আমি সম্প্রতি কমান্ডটি ব্যবহার করে আমার স্থানীয় মেশিনে দুটি কোরে স্পার্কের সাথে খেলা শুরু করেছি:

pyspark --master local[2]

আমার কাছে 393Mb টেক্সট ফাইল রয়েছে যার প্রায় এক মিলিয়ন সারি রয়েছে। আমি কিছু ডেটা ম্যানিপুলেশন অপারেশন করতে চেয়েছিলাম। আমি groupBy , sum , max , stddev মতো সাধারণ ক্রিয়াকলাপ সম্পাদনের জন্য পাইএসপার্কের অন্তর্নির্মিত ডেটাফ্রেম ফাংশনগুলি ব্যবহার করছি।

যাইহোক, আমি যখন একই ডেটাসেটে প্যান্ডাসে ঠিক একই ক্রিয়াকলাপ করি, তখন পান্ডারা বিলম্বের ক্ষেত্রে পিসপার্ককে একটি বিশাল ব্যবধানে পরাজিত করবে বলে মনে হয়।

আমি ভাবছিলাম যে এর সম্ভাব্য কারণ কী হতে পারে? আমার বেশ কয়েকটা চিন্তাভাবনা আছে।

  1. সিরিয়ালাইজেশন / ডি-সিরিয়ালাইজেশন প্রক্রিয়াটি অদক্ষভাবে কি অন্তর্নির্মিত কাজগুলি করে? যদি হ্যাঁ, তবে তাদের বিকল্পগুলি কী?
  2. ডেটা কি খুব ছোট সেট করা হয় যে এটি কোন স্পার্কের উপরের অন্তর্নিহিত জেভিএমের ওভারহেড ব্যয়কে ছাড়িয়ে নিতে পারে না?

দেখার জন্য ধন্যবাদ. অনেক প্রশংসিত.


কারণ:

  • অ্যাপাচি স্পার্ক একটি জটিল কাঠামো যা শত শত নোড জুড়ে প্রসেসিং বিতরণ করার জন্য ডিজাইন করা হয়েছে, সঠিকতা এবং ফল্ট সহনশীলতা নিশ্চিত করার সময়। এই সম্পত্তিগুলির প্রত্যেকটির উল্লেখযোগ্য ব্যয় রয়েছে।
  • কারণ বিশুদ্ধভাবে ইন-মেমরি ইন-কোর প্রসেসিং (পান্ডাস) হ'ল ডিস্ক এবং নেটওয়ার্কের (এমনকি স্থানীয়) আই / ও (স্পার্ক) এর চেয়ে দ্রুততরতার অর্ডার।
  • কারণ সমান্তরালতা (এবং বিতরণ প্রক্রিয়াজাতকরণ) উল্লেখযোগ্য ওভারহেড যুক্ত করে এবং সর্বোত্তম (বিব্রতকরভাবে সমান্তরাল কাজের চাপ) দিয়েও কোনও কার্যকারিতা উন্নতির গ্যারান্টি দেয় না।
  • কারণ স্থানীয় মোড পারফরম্যান্সের জন্য ডিজাইন করা হয়নি। এটি পরীক্ষার জন্য ব্যবহৃত হয়।
  • সর্বশেষে তবে সর্বনিম্ন নয় - 393MB তে চলমান 2 টি কোরের কোনও কার্যকারিতা উন্নতি দেখতে যথেষ্ট নয়, এবং একক নোড বিতরণের কোনও সুযোগ দেয় না
  • এছাড়াও স্পার্ক: স্কেলিং সংখ্যার কোরের অসঙ্গতিপূর্ণ পারফরম্যান্স নম্বর , পাইসপার্ক কেন একটি কলামের সর্বাধিক সন্ধানে এত ধীর? , কেন আমার স্পার্ক খাঁটি পাইথনের চেয়ে ধীর গতিতে চলে? পারফরম্যান্স তুলনা

আপনি দীর্ঘ সময়ের জন্য এভাবে চলতে পারেন ...





apache-spark-sql