2017-08-20 4 views
0

J'ai un Dataset <Tuple2<String, Double>> comme suit:Spark Dataset: Réduire, Agg, Groupe ou GroupByKey pour un dataset <Tuple2> Java

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

et la nécessité de le réduire par la chaîne pour additionner les valeurs en utilisant l'API Java Spark si que le résultat final devrait ressembler à ceci:

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

Dois-je utiliser Réduire, Agg, groupe ou GroupByKey? et comment?

+0

possible duplicata de [Apache Spark Transformations: groupByKey vs reduceByKey vs aggregateByKey] (https://stackoverflow.com/questions/42806638/apache-spark-transformations-groupbykey-vs-reducebykey-vs-aggregatebykey) –

+0

Merci. Je pose des questions sur Dataset, pas RDD. –

+0

Yup, mais Dataset n'a que groupBy ou groupByKey et reduceGroup ou agg. Pas de reduceByKey, c'est pourquoi j'ai suggéré de dupliquer. Yup, ce n'est pas, mais aussi votre question devrait être corrigée –

Répondre

0

Pensez-vous Dataset

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

Ensuite, vous pouvez appeler la fonction groupBy et sum comme ci-dessous

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

Ou vous pouvez le convertir en Dataset<Row> et appelez groupBy fonction

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