java - Spark 数据集 : Reduce, 数据集的 Agg、Group 或 GroupByKey <Tuple2> Java

标签 java apache-spark mapreduce dataset apache-spark-sql

我有一个数据集 <Tuple2<String, Double>>如下:

<A,1>
<B,2>
<C,2>
<A,2>
<B,3>
<B,4>

并且需要使用 Spark Java API 将其减少字符串以对值求和,以便最终结果应如下所示:

<A,3>
<B,9>
<C,2>

我应该使用Reduce、Agg、Group还是GroupByKey?以及如何?

最佳答案

假设您有数据集

Dataset<Tuple2<String, Double>> ds = ..;

然后您可以调用groupBy功能和sum像下面这样

ds.groupBy(col("_1")).sum("_2").show();

或者您可以将其转换为 Dataset<Row>并调用groupBy功能

Dataset<Row> ds1 = ds.toDF("key","value");
ds1.groupBy(col("key")).sum("value").show();

关于java - Spark 数据集 : Reduce, 数据集的 Agg、Group 或 GroupByKey <Tuple2> Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45785594/

相关文章:

java - Spring 注释 : Why @Required doesn't work when class is @Autowired

java - Spring 集成: poll files based on creation date/time

python双列表理解对scala等效

hadoop - 在 mapreduce 作业中恢复黑名单 tasktrackers

hadoop - Reducers 如何在 Hadoop 中收集 map 输出

java - 如何为mahout和hadoop添加maven依赖?

java - java和C++之间的字符串大小关系

hadoop - 如果数据大小超过可用内存,是什么让 Spark 变快?

apache-spark - Spark 1.6 中的数据集

javascript - 蒙戈数据库 : Mapreduce query filter positional operator