在Spark中记录整数记录的整数

时间:2016-01-03 02:59:58

标签: python apache-spark pyspark

我在Cloudera QuickStart VM中使用Spark控制台。在下面的示例输出中,您将看到使用以下代码获得的两列数据:

channel_views.filter(lambda x: "XYZ" == x[1]).take(10)

目标是折叠此数据集,使其仅显示一个唯一的" XYZ"以及与" XYZ"有关的所有数字的相应总和。我们如何获得这个?

示例输出:

[(1038, u'XYZ'),
(415, u'XYZ'),
(100, u'XYZ'),
(597, u'XYZ'),
(786, u'XYZ'),
(163, u'XYZ'),
(884, u'XYZ'),
(345, u'XYZ'),
(534, u'XYZ'),
(947, u'XYZ')]

1 个答案:

答案 0 :(得分:0)

您需要减少输出,最简单的方法是将([)转换为键值对,然后转换为map,例如:

reduceByKey

或者您可以在>>> from operator import add >>> rdd = sc.parallelize([(1038, u'XYZ'), ...]) >>> (rdd.filter(lambda x: "XYZ" == x[1]) ... .map(lambda x: (x[1], x[0])) ... .reduceByKey(add).collect()) [('XYZ', 5809)] 中定义更复杂的功能:

reduce