Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pySpark将列表或RDD元素转换为值(int)_Python_Apache Spark_Tokenize_Rdd_Pyspark - Fatal编程技术网

Python pySpark将列表或RDD元素转换为值(int)

Python pySpark将列表或RDD元素转换为值(int),python,apache-spark,tokenize,rdd,pyspark,Python,Apache Spark,Tokenize,Rdd,Pyspark,我正在使用pySpark计算标记化RDD中的元素。 这是其中一个要素: ('b00004tkvy', ['noah', 'ark', 'activity', 'center', 'jewel', 'case', 'ages', '3', '8', 'victory', 'multimedia']) 我必须计算完整RDD中的元素数。它只返回一个值,作为单个元素列表 有一个函数可以做到这一点。我使用了这段代码(当然可以更改,但必须保留在一行,即返回行): 结果是: [167] [58] There

我正在使用pySpark计算标记化RDD中的元素。 这是其中一个要素:

('b00004tkvy', ['noah', 'ark', 'activity', 'center', 'jewel', 'case', 'ages', '3', '8', 'victory', 'multimedia'])
我必须计算完整RDD中的元素数。它只返回一个值,作为单个元素列表

有一个函数可以做到这一点。我使用了这段代码(当然可以更改,但必须保留在一行,即返回行):

结果是:

[167]
[58]
There are [167, 58] tokens.
此时,我不知道如何将结果作为值(整数)而不是列表使用。 我的目标是

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]
当您需要此字段中的值时,该值将返回一个列表。添加[0]将为您提供列表中的第0项,您可以从中获取总计

但你真的不需要

x:(1, 

如果你所做的都是合计,你只需要len(x[1]),然后像你所做的那样减少。

所有这些lambdas使你的代码不可读。您的实际问题很容易解决,但如果您编写的代码更明显/可维护,您可能会理解它。这让我想知道为什么你们要做reduceByKey而不是reduce。这可能是edx董事会本身最好的答案……非常感谢你们两位。你的提示帮助我解决了这一问题@贾斯汀,在edx板上,我不喜欢代码。
x:(1,