【发布时间】:2016-02-24 03:50:31
【问题描述】:
我正在学习如何在 Python 中使用 Spark 进行编程并解决一个问题。
问题是我有一个 PythonRDD 作为 id 和描述加载:
pythonRDD.take(1)
## [('b000jz4hqo', ['clickart', '950', '000', 'premier', 'image', 'pack', 'dvd', 'rom', 'broderbund'])]
ParallelCollectionRDD 加载为 id 和描述:
paraRDD.take(1)
## [('b000jz4hqo', ['clickart', '950', '000', 'premier', 'image', 'pack', 'dvd', 'rom', 'broderbund'])]
我可以像这样对 paraRDD 进行计数:
paraRDD.map(lambda l: (l[0],len(l[1]))).reduce(lambda a,b: a[1] + b[1])
或者干脆
paraRDD.reduce(lambda a,b: len(a[1]) + len(b[1]))
但是在 pythonRDD 上它遇到了错误,错误说:
“TypeError: 'int' 对象没有属性 'getitem'”。
def countTokens(vendorRDD):
return vendorRDD.map(lambda l: (l[0],len(l[1]))).reduce(lambda a,b: a[1] + b[1])
任何关于这是如何发生的想法将不胜感激?!
【问题讨论】:
标签: python apache-spark pyspark