मेरे पास एक बड़ा डेटासेट है जिसे मुझे विशिष्ट मापदंडों के अनुसार समूहों में विभाजित करने की आवश्यकता है। मैं चाहता हूं कि नौकरी यथासंभव कुशलता से संसाधित हो। मैं ऐसा करने के दो तरीकों की कल्पना कर सकता हूं
विकल्प 1 - मूल आरडीडी और फिल्टर से मानचित्र बनाएं
def customMapper(record):
if passesSomeTest(record):
return (1,record)
else:
return (0,record)
mappedRdd = rddIn.map(lambda x: customMapper(x))
rdd0 = mappedRdd.filter(lambda x: x[0]==0).cache()
rdd1 = mappedRdd.filter(lambda x: x[1]==1).cache()
विकल्प 2 - मूल आरडीडी को सीधे फ़िल्टर करें
def customFilter(record):
return passesSomeTest(record)
rdd0 = rddIn.filter(lambda x: customFilter(x)==False).cache()
rdd1 = rddIn.filter(customFilter).cache()
मुट्ठी विधि को 3 बार सेट किए गए मूल डेटा के सभी रिकॉर्ड से अधिक चलना पड़ता है, जहां दूसरे को सामान्य परिस्थितियों में केवल दो बार ऐसा करना पड़ता है, हालांकि, स्पार्क दृश्यों के ग्राफ निर्माण के पीछे कुछ करता है, इसलिए मैं सोच सकता था कि वे हैं उसी तरह से प्रभावी ढंग से किया गया। मेरे प्रश्न हैं: ए।) क्या एक विधि दूसरे की तुलना में अधिक कुशल है, या क्या स्पार्क ग्राफ निर्माण उन्हें समकक्ष बी बनाता है।) क्या इस विभाजन को एक पास में करना संभव है