【问题标题】:Spark-Java : Display join RDDSpark-Java:显示加入 RDD
【发布时间】:2015-06-22 07:16:37
【问题描述】:

我正在尝试加入两个 pairRDD,如下所示,而

lat1 : K,V -> k-integer , V- Double lat2 : K,V -> k-integer , V- Double

   JavaPairRDD<Integer,Tuple2<Double,Double>> latlong = lat.join(long);

我假设新的 RDD 是 K,[V1,V2] 我想显示新的 RDD

如果我想根据值进行操作,执行的方式是什么

请在 Spark-Java Api 中提出建议

P.s:我看到很多答案都在 scala 中,但我的要求是在 JAVa 中实现

【问题讨论】:

    标签: java join apache-spark rdd keyvaluepair


    【解决方案1】:

    来自 Spark 文档:

    在 (K, V) 和 (K, W) 类型的数据集上调用 join 时,返回一个 (K, (V, W)) 对的数据集,其中每个键的所有元素对。

    所以你的假设是对的:

    JavaPairRDD<Integer,Tuple2<Double,Double>> latlong = lat.join(long);
    

    当您需要处理JavaPairRDD 中的值时,可以使用#mapValues() 方法:

    将键值对RDD中的每个值通过一个map函数传递,而不改变键;这也保留了原始 RDD 的分区。

    为了显示JavaPairRDD,您可以使用与通常相同的输出方法 e。 G。 #saveAsTextFile()


    当您需要将 (K, (V, W)) 中的值映射到 (K,V-W) 之类的其他值时,您可以使用提到的 mapValues() 转换:

    JavaPairRDD<Integer, String> pairs = latlong.mapValues(
            new Function<Tuple2<Double, Double>, String>() {
              @Override
              public String call(Tuple2<Double, Double> value) throws Exception {
                return value._1() + "-" + value._2();
              }
            });
    

    【讨论】:

    • 您能建议如何将 (K,(V,W)) 转换为 (K,V-W) 吗?
    • 我编辑了我的帖子并添加了mapValues() 用法的示例。
    猜你喜欢
    • 2019-01-01
    • 2020-06-25
    • 1970-01-01
    • 2016-09-07
    • 2016-01-24
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    相关资源
    最近更新 更多