无论键如何,Spark 都会总结值
Spark sum up values regardless of keys
我的元组列表如下所示:
Tup = [(u'X45', 2), (u'W80', 1), (u'F03', 2), (u'X61', 2)]
我想对所有值求和,在本例中,2+1+2+2=7
如果密钥相同,我可以在 spark 中使用 Tup.reduceByKey()
。但是我可以在 spark 中使用哪个函数来计算所有值而不考虑密钥?
我试过 Tup.sum()
但它给了我 (u'X45', 2, u'W80', 1, u'F03', 2, u'X61', 2)
顺便说一句,由于数据集很大,我想在 RDD 中对其进行总结,所以我不使用 Tup.collect()
和 sum
从 Spark 中总结出来。
这很简单。
从概念上讲,您应该首先映射到原始 RDD 上并提取第二个值。然后总结那些
在 Scala 中
val x = List(("X45", 2), ("W80", 1), ("F03", 2), ("X61", 2))
val rdd = sc.parallelize(x)
rdd.map(_._2).sum()
在Python
x = [(u'X45', 2), (u'W80', 1), (u'F03', 2), (u'X61', 2)]
rdd = sc.parallelize(x)
y = rdd.map(lambda x : x[1]).sum()
在这两种情况下,都会打印 7 的总和。
我的元组列表如下所示:
Tup = [(u'X45', 2), (u'W80', 1), (u'F03', 2), (u'X61', 2)]
我想对所有值求和,在本例中,2+1+2+2=7
如果密钥相同,我可以在 spark 中使用 Tup.reduceByKey()
。但是我可以在 spark 中使用哪个函数来计算所有值而不考虑密钥?
我试过 Tup.sum()
但它给了我 (u'X45', 2, u'W80', 1, u'F03', 2, u'X61', 2)
顺便说一句,由于数据集很大,我想在 RDD 中对其进行总结,所以我不使用 Tup.collect()
和 sum
从 Spark 中总结出来。
这很简单。
从概念上讲,您应该首先映射到原始 RDD 上并提取第二个值。然后总结那些
在 Scala 中
val x = List(("X45", 2), ("W80", 1), ("F03", 2), ("X61", 2))
val rdd = sc.parallelize(x)
rdd.map(_._2).sum()
在Python
x = [(u'X45', 2), (u'W80', 1), (u'F03', 2), (u'X61', 2)]
rdd = sc.parallelize(x)
y = rdd.map(lambda x : x[1]).sum()
在这两种情况下,都会打印 7 的总和。