Scala 程序到 Java 8 程序转换

问题描述 投票:0回答:1

我已经开始学习 Apache Spark。现在教程大多是用 Scala 编写的。我也想尝试 Java 8 中的程序。

但是我在 Java 8 中找不到一些 Scala 代码的等效编码。

Scala代码如下:

def main(args: Array[String]) {
   
    val sc = new SparkContext("local[*]", "<class-name>")
       
    val lines = sc.textFile("../a.data")
    val stars = lines.map(x => x.toString().split("\t")(2))
    val results = ratings.countByValue()
    val sortedResults = results.toSeq.sortBy(_._1)
    sortedResults.foreach(println)
  }

我编写的 Java 8 中的等效代码是:

public static void main(String[] args){
        
        JavaSparkContext sc = new JavaSparkContext("local[*]", "<class-name>");
        JavaRDD<String> lines = sc.textFile("../a.data");
        
        //....
}

代码的其余部分,我无法转换。我在 Java 8 中找不到等效的 map 函数。有一个平面地图,但它创建了许多实例。

我尝试了其他几种方法,但它们不起作用。

文件中的数据格式为:

191 241 4   654258949
186 312 1   991123772
java scala apache-spark
1个回答
0
投票

不知何故,这确实有效。不确定我的编码是否有效。

sc.textFile("../a.data")
        .map(text -> Arrays.asList(text.split("\t")[2]))
        .mapToPair(word -> new Tuple2<>(word, 1))
        .reduceByKey((a, b) -> a + b)
        .foreach(result -> System.out.println(
            String.format("Word [%s] count [%d].", result._1(), result._2)));
© www.soinside.com 2019 - 2024. All rights reserved.