में अपने स्वयं के reduceByKey रोलिंग मैं RDDs के अलावा अधिक DataFrames और डेटासेट उपयोग करने के लिए सीखने के लिए कोशिश कर रहा हूँ। आरडीडी के लिए, मुझे पता है कि मैं someRDD.reduceByKey((x,y) => x + y)
कर सकता हूं, लेकिन मुझे डेटासेट के लिए यह फ़ंक्शन दिखाई नहीं देता है। तो मैंने एक लिखने का फैसला किया।स्पार्क डेटासेट
someRdd.map(x => ((x.fromId,x.toId),1)).map(x => collection.mutable.Map(x)).reduce((x,y) => {
val result = mutable.HashMap.empty[(Long,Long),Int]
val keys = mutable.HashSet.empty[(Long,Long)]
y.keys.foreach(z => keys += z)
x.keys.foreach(z => keys += z)
for (elem <- keys) {
val s1 = if(x.contains(elem)) x(elem) else 0
val s2 = if(y.contains(elem)) y(elem) else 0
result(elem) = s1 + s2
}
result
})
हालांकि, यह सबकुछ ड्राइवर को देता है। Dataset
वापस करने के लिए आप इसे कैसे लिखेंगे? शायद नक्शापार्टिशन और क्या वहां है?
नोट इस संकलित लेकिन नहीं चलता है क्योंकि यह अभी तक
स्पार्क 2.0.0 के साथ, इसे आजमाएं, yourDataset.groupByKey (...)। समूह समूह (...) –
क्या उत्प्रेरक अनुकूलक नोटिस होगा कि आप एक समूह कर रहे हैं और इसे और अधिक कुशल बनाते हैं? 'कुशल' से मेरा मतलब है कि एक आरडीडी कुंजी द्वारा कम करने के तरीके के माध्यम से समूह को करने से बेहतर है? –