ज्ञान और दूसरों के ज्ञान की निरंतर खोज में, मैं ध्यान देता हूं कि नीचे rdd3 कथन संग्रह के बिना काम करता है लेकिन यह संग्रह के साथ नहीं है। मैं सोच रहा हूं कि ऐसा क्यों है कि जब आप यह पढ़ रहे हैं कि संग्रह क्या करता है, तो आप काफी भ्रमित हो सकते हैं। उदाहरण गढ़े गए हैं इसलिए इसके बारे में चिंता न करें।

एनपी:

val rdd = sc.parallelize(List((" aaa", "x"), ("bbbb ", "y"), (" cc ", "z"), ("gggg  ", " a"), ("    ", "b")))
val rdd2 = rdd.map{ case (field1, field2) => ( field1.replaceAll(" ", ""), field1.trim, field1, field2) }.collect
val rdd3 = rdd2.map{ case (field1, field2, field3, field4) => (field1.replaceAll(" ", ""), if (field1.trim == "") " "  else field1 , field3, field4) }

संकट:

val rdd3 = rdd2.map{ case (field1, field2, field3, field4) => (field1.replaceAll(" ", ""), if (field1.trim == "") " "  else field1 , field3, field4) }.collect

रिटर्न:

notebook:7: error: missing argument list for method collect in trait TraversableLike
Unapplied methods are only converted to functions when a function type is expected.
You can make this conversion explicit by writing `collect _` or `collect(_)(_)` instead of `collect`.
val rdd3 = rdd2.map{ case (field1, field2, field3, field4) => (field1.replaceAll(" ", ""), if (field1.trim == "") " "  else field1 , field3, field4) }.collect

नौसिखिए के लिए पालन करना मुश्किल है। त्रुटि संदेश को देखकर मैं इसे कैसे प्राप्त करूं?

0
thebluephantom 24 जून 2018, 22:56

1 उत्तर

सबसे बढ़िया उत्तर

कलेक्ट () विधि ड्राइवर मशीन को एक सरणी के रूप में संपूर्ण rdd/डेटासेट का आउटपुट लौटाती है।

तो आपके उदाहरण में rdd2 ड्राइवर मशीन को एक सरणी देता है, इसलिए आप इसे RDD की तरह उपयोग नहीं कर सकते। कृपया rdd2 बनाते समय संग्रह विधि को हटा दें, फिर संग्रह का आपका तीसरा विवरण काम करना चाहिए।

1
Chandan Ray 24 जून 2018, 23:07