简体   繁体   English

Spark示例Java 7到Java 8

[英]Spark example Java 7 to Java 8

I am reading Apache Spark examples, which are written in Java 7. For example, this code: 我正在阅读用Java 7编写的Apache Spark示例。例如,此代码:

public final class JavaKMeans {

  private static class ParsePoint implements Function<String, Vector> {
    private static final Pattern SPACE = Pattern.compile(" ");

    @Override
    public Vector call(String line) {
      String[] tok = SPACE.split(line);
      double[] point = new double[tok.length];
      for (int i = 0; i < tok.length; ++i) {
        point[i] = Double.parseDouble(tok[i]);
      }
      return Vectors.dense(point);
    }
  }

  ...
  JavaRDD<Vector> points = lines.map(new ParsePoint());
  ...
}

How this call method can be rewritten using Java 8? 如何使用Java 8重写此调用方法?

You could refactor it slightly like below (not tested): 您可以按如下所示对其进行重构(未测试):

public final class JavaKMeans {
  private static final Pattern SPACE = Pattern.compile(" ");

  private Vector call(String line) {
    double[] point = SPACE.splitAsStream(line)
                        .mapToDouble(Double::parseDouble)
                        .toArray();
    return Vectors.dense(point);
  }

  ...
  JavaRDD<Vector> points = lines.map(this::call);
  ...
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM