2016-08-16 72 views
0

提取4元组我有如下图所示Pyspark从RDD

return [word_val+'&'+f_val+'&'+N_val+'&'+n_val+'&'+str(1)] 

我要地图这些值计算结果是包含五个元组RDD,我期待的映射喜欢的工作:

reducer_3 = add_m.map(lambda word: (word[0],word[1],word[2],word[3],1)).reduceByKey(lambda word[0],1: word[0]+1) 

而且reducer_3应该返回一个包含RDD:

word[0] & summation_of_1's & word[1] & word[2] & word[3] 

回答

0

您需要映射成一对重b在reduceByKey之前,例如:

reducer_3 = add_m.map(lambda word: ((word[0],word[1],word[2],word[3]),1)).reduceByKey(lambda x,y: x+y) 

这将返回一组4元组及其计数。您显示的原始代码似乎缺少映射步骤中四元组周围的额外元素。 你的问题并没有让你完全清楚你想达到什么,但希望上面的例子会有所帮助...

+0

Im实际上是在语料库上计算TF-IDF。我想要map函数从word [0]中取词,并执行: reduceByKey(lambda word [0],1:word [0] +1) – Sameer

+0

您能提供一个简单的输入和输出示例吗?为了仅统计词[0]的实例,你必须在reduceByKey之前丢弃其余的元组, 'add_m.map(lambda word:(word [0],1))。reduceByKey(lambda x,y:x + y)' – RichD