मैं एक स्पार्क ग्राफ (स्कैला का उपयोग करके) में डिग्री के आधार पर शीर्ष सूची को सॉर्ट करने का प्रयास कर रहा हूं

// Sort Ascending - both the 2 below yeild same results

gGraph.inDegrees.collect.sortBy(_._2).take(10)

gGraph.inDegrees.collect.sortWith(_._2 < _._2).take(10)

// Sort Decending 

gGraph.inDegrees.collect.sortWith(_._2 > _._2).take(10)

gGraph.inDegrees.collect.sortBy(_._2, ascending=false).take(10)     //Doesnt Work!!

मुझे उम्मीद है कि sortBy(_._2, ascending=false) के परिणाम ऊपर बताए गए sortWith(_._2>_._2) के समान होंगे। लेकिन नीचे त्रुटि हो रही है। इसके आसपास किसी भी विचार की सराहना करें। धन्यवाद!

scala> gGraph.inDegrees.collect.sortBy(_.2, आरोही=झूठा).टेक(10) :55: त्रुटि: विधि सॉर्ट के लिए बहुत अधिक तर्क: (f: ((org.apache.spark.graphx.VertexId, Int)) => बी) (अंतर्निहित आदेश: scala.math.Ordering[B])Array[(org.apache.spark.graphx.VertexId, Int)] gGraph.inDegrees.collect.sortBy(._2, आरोही=गलत).टेक(10)

0
DanJoe 12 पद 2017, 01:23

1 उत्तर

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

चूंकि आप पहले .collect कर रहे हैं, आप .sortBy को Array पर कॉल कर रहे हैं, RDD पर नहीं। Array की sortBy विधि केवल एक पैरामीटर लेती है (आप ascending निर्दिष्ट नहीं कर सकते)।

आपको आमतौर पर स्पार्क को यथासंभव अधिक से अधिक गणना करने देना चाहिए, और बहुत अंत में केवल collect (या take)। इसे इस्तेमाल करे:

gGraph.inDegrees.sortBy(_._2, ascending=false).take(10)
1
Joe K 12 पद 2017, 01:32