【发布时间】:2017-01-06 10:37:03
【问题描述】:
我是 PySpark 的新手,我正在尝试了解如何做到这一点。任何帮助表示赞赏。
例如,我有这个 RDD:
[[u'merit', u'release', u'appearance'], [u'www.bonsai.wbff.org'], [u'whitepages.com'], [u'the', u'childs', u'wonderland', u'company'], [u'lottery']]
我尝试拥有:
[[(u'merit',1), (u'release',1), (u'appearance',1)], [(u'www.bonsai.wbff.org',1)], [(u'whitepages.com',1)], [(u'the',1), (u'childs',1), (u'wonderland',1), (u'company',1)], [(u'lottery',1)]]
但是我尝试过的所有结果都得到了这个结果:
[[u'merit', u'release', u'appearance',1], [u'www.bonsai.wbff.org',1], [u'whitepages.com',1], [u'the', u'childs', u'wonderland', u'company',1], [u'lottery',1]]
或这些错误:
TypeError: 'PipelinedRDD' object is not iterable-
AttributeError: 'list' object has no attribute 'foreach'- 或split、take等。
我试过这个:
rdd1=rdd.map(lambda r : (r,1))
我有第一个结果:
[u'merit', u'release', u'appearance',1], [u'www.bonsai.wbff.org',1], [u'whitepages.com',1], [u'the', u'childs', u'wonderland', u'company',1], [u'lottery',1]]
rdd1=rdd.map(lambda r : (r[:][0],1))
它只得到每行的第一个单词,这不是我想要的
for row in rdd.collect() : row.foreach(lambda x : (x,1))
# AttributeError: 'list' object has no attribute 'foreach'
rdd3.take(100).foreach( lambda a : (a.foreach( lambda e : print(e,1))))
# AttributeError: 'list' object has no attribute 'foreach'
【问题讨论】: