如何使用JavaRDD(Spark)中的3个变量

时间:2019-11-17 20:08:45

标签: java apache-spark mapreduce bigdata rdd

基本上我有一个csv文件,其中包含具有国家,年份,代码,商品等字段的商业交易,如下所示:

  

阿富汗尼(Afghanistain); 2016; 010410;现场直播;出口; 6088; 2339;物品数量; 51; 01_live_animals

到目前为止,通过使用JavaPairRDD,在每个条目中使用2个变量一直没有问题。例如,找到哪种商品总重量最高

当我在其中添加第三个变量时,我遇到的麻烦是要把握要做什么。例如,找到按年份分隔的总重量最高的商品

这是我到目前为止所拥有的:

JavaRDD<String> arquivo = context.textFile("in/Transacoes.csv");
    //removes header with field names
    file = file.filter(line-> !line.startsWith("country"));

    //removes lines where weight field is empty
    file = file.filter(line -> !line.split(";")[6].isEmpty());

    //generates pairRDD in format  (year,(commodity,weight))
    JavaPairRDD<String, Tuple2<String,Long>> transaction = arquivo.mapToPair(getYearPair());

所以我目前所拥有的是格式为pairRDD

(年份,包含(商品名称,重量)的元组)

我认为一个简单的reduceByKey可以解决我的问题,但是如果我只是增加重量,它将忽略商品名称。

我想要得到的是每年该商品的总重量。我该怎么办?

0 个答案:

没有答案