दिए गए आरडीडी से शुरू करते हैं।
val sampleRDD = sc.parallelize(Array((1,2),(3,4),(3,6)))
अब, flatMapValues
विधि flatMap
और mapValues
का एक संयोजन है।
क्या mapValues
करता है कि यह कुंजी रखने के दौरान मूल्यों को मानचित्र करता है। उदाहरण,
अगर आप sampleRDD.mapValues(x => x to 5)
करते हैं, तो यह आपको
Array((1,Range(2, 3, 4, 5)), (3,Range(4, 5)), (3,Range()))
नोटिस यहाँ दे देंगे कि कुंजी-मान पेयर (3, 6)
के लिए, यह पैदा करता है (3,Range())
6 to 5 does not produce a non-empty collection of values.
के बाद से
क्या flatMap
करता है यह "टूट जाता है संग्रह के तत्वों में संग्रह "नीचे। आप here और here जैसे फ्लैटमैप ऑनलाइन के अधिक सटीक विवरण की खोज कर सकते हैं।
उदाहरण के लिए,
दिया val rdd2 = sampleRDD.mapValues(x => x to 5)
, अगर हम करते हैं rdd2.flatMap(x => x)
, आप
Array((1,2),(1,3),(1,4),(1,5),(3,4),(3,5)).
है कि मिल जाएगा, प्रत्येक कुंजी में संग्रह में प्रत्येक तत्व के लिए, हम एक (key, element)
जोड़ी बना सकते हैं।
यह भी ध्यान दें कि (3, Range())
कोई अतिरिक्त कुंजी तत्व जोड़ी उत्पन्न नहीं करता है क्योंकि अनुक्रम खाली है।
अब flatMap
और mapValues
संयोजन, आपको flatMapValues
मिलते हैं।
ग्रेट स्पष्टीकरण। बहुत उपयोगी। – maddie