我正在使用 pySpark 来计算标记化 RDD 中的元素数量。 这是要素之一:
('b00004tkvy', ['noah', 'ark', 'activity', 'center', 'jewel', 'case', 'ages', '3', '8', 'victory', 'multimedia'])
我必须计算完整 RDD 中的元素数量。它仅返回一个值,作为单个元素列表。
有一个函数可以做到这一点。我使用了这段代码(当然可以更改,但它必须保留在一行上,即 Return 一行):
def countTokens(RDD):
return RDD.map(lambda x :(1,len(x[1]))).reduceByKey(lambda x,y:x+y).map(lambda x: int(x[1])).collect()
print countTokens(aRecToToken)
print countTokens(bRecToToken)
totalTokens = countTokens(aRecToToken) + countTokens(bRecToToken)
结果是:
[167]
[58]
There are [167, 58] tokens.
此时我不知道如何将结果用作值(整数)而不是列表。 我要达到的目标 id
167
58
There are 225 tokens.
我希望有人能帮助我。
提前谢谢您。
def countTokens(RDD):
return RDD.map(lambda x :(1,len(x[1])))
.reduceByKey(lambda x,y:x+y)
.map(lambda x: int(x[1])).collect()[0]
当您需要 225 中的值时,该值将返回一个列表。添加 [0] 将为您提供列表中的第零项,您可以从中获取总计。
但是你真的不需要
x:(1,
如果你所做的一切都是总计,你只需要 len(x[1]) 然后像你所做的那样 reduce