【问题标题】:Spark Dataset: Reduce, Agg, Group or GroupByKey for a Dataset<Tuple2> JavaSpark 数据集:Dataset<Tuple2> Java 的 Reduce、Agg、Group 或 GroupByKey
【发布时间】:2018-01-28 20:22:17
【问题描述】:

我有一个数据集&lt;Tuple2&lt;String, Double&gt;&gt;,如下:

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

并且需要使用 Spark Java API 将其通过 String 进行归约,以便最终结果如下所示:

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

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

【问题讨论】:

  • 谢谢。我问的是数据集,而不是 RDD。
  • 是的,但数据集只有 groupBy 或 groupByKey 和 reduceGroup 或 agg。没有reduceByKey,这就是我建议重复的原因。是的,不是,但您的问题也应该得到纠正
  • 其实在Java中,Dataset有Reduce、Agg、Group和GroupByKey。刚刚更新了我的问题。
  • 但不是 reduceByKey :P 这导致了我的错误。没关系,我撤回了我的近距离投票,对不起:)

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


【解决方案1】:

假设你有数据集

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

然后你可以像下面这样调用groupBy函数和sum

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

或者您可以将其转换为Dataset&lt;Row&gt; 并调用groupBy 函数

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

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 2021-04-12
    • 1970-01-01
    • 2017-01-16
    • 2022-09-22
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多