के बाद स्पार्क के साथ हाइव टेबल से पढ़ने और लिखना हमारे पास एक हाइव वेयरहाउस है, और विभिन्न कार्यों (मुख्य रूप से वर्गीकरण) के लिए स्पार्क का उपयोग करना चाहता था। कभी-कभी परिणामों को एक हाइव टेबल के रूप में लिखें। उदाहरण के लिए, हमने original_table कॉलम दो द्वारा समूहीकृत मूल_टेबल कॉलम दो की कुल योग को खोजने के लिए निम्न पायथन फ़ंक्शन लिखा है। फ़ंक्शन काम करता है, लेकिन हम चिंतित हैं कि यह अक्षम है, विशेष रूप से मानचित्र कुंजी-मूल्य जोड़े, और शब्दकोश संस्करणों में कनवर्ट करने के लिए। कार्य combiner, mergeValue, mergeCombiner कहीं और परिभाषित किया जाता है, लेकिन ठीक काम करते हैं।एग्रीगेशन
from pyspark import HiveContext
rdd = HiveContext(sc).sql('from original_table select *')
#convert to key-value pairs
key_value_rdd = rdd.map(lambda x: (x[0], int(x[1])))
#create rdd where rows are (key, (sum, count)
combined = key_value_rdd.combineByKey(combiner, mergeValue, mergeCombiner)
# creates rdd with dictionary values in order to create schemardd
dict_rdd = combined.map(lambda x: {'k1': x[0], 'v1': x[1][0], 'v2': x[1][1]})
# infer the schema
schema_rdd = HiveContext(sc).inferSchema(dict_rdd)
# save
schema_rdd.saveAsTable('new_table_name')
क्या वही काम करने के और अधिक प्रभावी तरीके हैं?
यह सुनिश्चित नहीं है कि आपको एक rdd में क्यों परिवर्तित करना है, लेकिन यदि आप जोर देते हैं कि आप 'comb_BueKey' के बजाय 'key_value_rdd.reduceByKey (lambda x, y: sum (x, y)) कर सकते हैं। – mtoto