首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Apache火花中所有对点之间的距离

Apache火花中所有对点之间的距离
EN

Stack Overflow用户
提问于 2015-03-19 21:00:46
回答 2查看 1.9K关注 0票数 0

我有一个包含470纬度和经度值的文本文件。我要计算所有对点的距离。有人能告诉我如何用JAVA作为编程语言在Apache中实现它吗?

~问好,钱丹

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-20 00:59:09

为了补充@Holden的回答,这里有一个Java片段说明了这个想法。代码假设您有一个文件,其中每一行都包含由空格分隔的纬度和经度值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JavaRDD<String> input = sc.textFile("/path/to/your/file");

// map each line to pairs of Double, representing the points
JavaPairRDD<Double, Double> points = input.mapToPair(
      new PairFunction<String, Double, Double>() {
          public Tuple2<Double, Double> call(String s) throws Exception {
              String[] parts = s.split(" +");
              return new Tuple2<>(
                      Double.parseDouble(parts[0]),
                      Double.parseDouble(parts[1]));
          }
      }
);

// then, get the cartesian product of the point set, and map
// each resulting pair of points to the distance between them
JavaDoubleRDD distances = points.cartesian(points).mapToDouble(new DoubleFunction<Tuple2<Tuple2<Double, Double>, Tuple2<Double, Double>>>() {
  public double call(Tuple2<Tuple2<Double, Double>, Tuple2<Double, Double>> pointPair) throws Exception {
      Double lat1 = pointPair._1()._1();
      Double lon1 = pointPair._1()._2();
      Double lat2 = pointPair._2()._1();
      Double lon2 = pointPair._2()._2();
      return dist(lat1, lon1, lat2, lon2); // omitted for clarity
  }
});

// then, do something with your distances
distances.foreach(new VoidFunction<Double>() {
  public void call(Double aDouble) throws Exception {
      System.out.println("D: " + aDouble);
  }
});

当然,如果您出于某种原因需要维护每个点之间的链接以及它们之间的距离,只需映射到由一对点作为第一个元素和距离作为第二个元素组成的一对。

希望能帮上忙。干杯!

票数 0
EN

Stack Overflow用户

发布于 2015-03-19 21:51:06

您可以获取点的RDD,然后在RDD上使用笛卡儿函数及其自身,这将返回一个包含所有点组合对的RDD,然后您可以映射它并计算每对的距离。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29159732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文