मैं एक मान से समूह करना चाहता हूं और फिर प्रत्येक समूह में pieSpark का उपयोग करके अधिकतम मान पाता हूं। मेरे पास निम्न कोड है लेकिन अब मैं अधिकतम मूल्य निकालने के तरीके पर थोड़ा फंस गया हूं।pyspark: grouby और उसके बाद प्रत्येक समूह का अधिकतम मान
# some file contains tuples ('user', 'item', 'occurrences')
data_file = sc.textData('file:///some_file.txt')
# Create the triplet so I index stuff
data_file = data_file.map(lambda l: l.split()).map(lambda l: (l[0], l[1], float(l[2])))
# Group by the user i.e. r[0]
grouped = data_file.groupBy(lambda r: r[0])
# Here is where I am stuck
group_list = grouped.map(lambda x: (list(x[1]))) #?
रिटर्न कुछ की तरह:
[[(u'u1', u's1', 20), (u'u1', u's2', 5)], [(u'u2', u's3', 5), (u'u2', u's2', 10)]]
मैं अब प्रत्येक उपयोगकर्ता के लिए अधिकतम 'घटना' लगाना चाहते हैं। अधिकतम करने के बाद अंतिम परिणाम एक RDD है कि इस तरह देखा परिणाम होगा:
[[(u'u1', u's1', 20)], [(u'u2', u's2', 10)]]
कहाँ केवल अधिकतम डाटासेट फाइल में उन में से प्रत्येक के लिए ही बने रहेंगे। दूसरे शब्दों में, मैं आरडीडी के मूल्य को बदलना चाहता हूं ताकि प्रत्येक उपयोगकर्ता अधिकतम घटनाओं में केवल एक तिहाई हो।
आप इस '(लैम्ब्डा x1, x2 समझा सकता है एक्स [-1])) 'यदि संभव हो तो? – WoodChopper
@WoodChopper 'max' सिर्फ एक मानक पायथन' अधिकतम' है। यह तत्व लेता है और सबसे बड़ा लौटाता है। 'कुंजी' तर्क वर्णन करता है कि तत्वों की तुलना कैसे की जानी चाहिए (यहां अंतिम वस्तु से)। – zero323