我正在使用pySpark来计算一个令牌化RDD中的元素,这是其中一个元素:
('b00004tkvy', ['noah', 'ark', 'activity', 'center', 'jewel', 'case', 'ages', '3', '8', 'victory', 'multimedia'])
我必须计算完整RDD中的元素数量,它只返回一个值,作为一个元素列表。
有一个函数可以做到这一点。我使用了下面的代码(当然它可以更改,但它必须保持在一行中,即返回行):
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.
在这一点上,我不知道如何使用结果作为一个值(整数),而不是作为一个列表。
167
58
There are 225 tokens.
我希望有人能帮助我。
先谢谢你。
1条答案
按热度按时间rfbsl7qr1#
当你需要这个225中的值时,这个值会返回一个列表。2加上[0]会给予你这个列表中的第零个项目,你可以从中得到你的总数。
但你真的不需要
如果你所做的一切都是总计,你只需要len(x[1]),然后像你所做的那样去reduce。