Scala中的Spark代码可以转换成Java吗?
我有一个使用ApacheSpark的源代码。源代码是用Scala编写的,我想将其转换为JavaScala中的Spark代码可以转换成Java吗?,java,scala,apache-spark,apache-spark-mllib,Java,Scala,Apache Spark,Apache Spark Mllib,我有一个使用ApacheSpark的源代码。源代码是用Scala编写的,我想将其转换为Java 是否可以从所有Scala源代码转换为Java?将源代码编译为.class文件(或下载,如果可用),并尝试对其进行反编译 以下是wiki操作指南中的一个工具: 将源代码编译成.class文件(如果可用,也可以下载),并尝试对其进行反编译 以下是wiki操作指南中的一个工具: 否。Spark Scala API不同于Java API tl;博士 虽然可以使用一些技巧来编译/反编译,或者让一些IDE来进行翻
是否可以从所有Scala源代码转换为Java?将源代码编译为.class文件(或下载,如果可用),并尝试对其进行反编译 以下是wiki操作指南中的一个工具:
将源代码编译成.class文件(如果可用,也可以下载),并尝试对其进行反编译 以下是wiki操作指南中的一个工具:
否。Spark Scala API不同于Java API tl;博士 虽然可以使用一些技巧来编译/反编译,或者让一些IDE来进行翻译,但生成的代码在Spark中无法工作 原因之一是Spark Scala API使用隐式转换来启用Java API中不可用的类型相关功能,而Java API中需要使用显式类 一个简单的例子: 斯卡拉 JAVA
javapairrdpairs=words.mapToPair(新PairFunction(){
公共Tuple2调用(字符串s){返回新的Tuple2(s,1);}
});
javapairdd counts=pairs.reduceByKey(新函数2(){
公共整数调用(整数a,整数b){返回a+b;}
});
请注意Java对等方需要如何使用特定的方法(Scala中的
map
与Java中的mapToPair
),并指定一个给定的类(javapairdd)来访问特定的pair函数,而Scala中不需要这种方法。否。Spark Scala API不同于Java API
tl;博士
虽然可以使用一些技巧来编译/反编译,或者让一些IDE来进行翻译,但生成的代码在Spark中无法工作
原因之一是Spark Scala API使用隐式转换来启用Java API中不可用的类型相关功能,而Java API中需要使用显式类
一个简单的例子:
斯卡拉
JAVA
javapairrdpairs=words.mapToPair(新PairFunction(){
公共Tuple2调用(字符串s){返回新的Tuple2(s,1);}
});
javapairdd counts=pairs.reduceByKey(新函数2(){
公共整数调用(整数a,整数b){返回a+b;}
});
请注意Java对应方需要如何使用特定的方法(Scala中的
map
与Java中的mapToPair
),并指定一个给定的类(javapairdd)来访问特定的pair函数,而在Scala中这是不需要的。这取决于具体情况。目前Spark(直到版本1.1)为其大多数API/子项目提供了Java版本,但不是所有项目。不支持GraphX Java API。因此,如果您的Scala代码使用graphx库,那么它可能无法在Java中工作,除非您编写自定义的粘合代码
即使将Scala类文件反编译为Java,如果程序语义没有错误,也可能无法执行Java代码。我建议您学习JavaAPI,然后用Java重写Scala代码。这也将使您更好地理解Spark API,如果您将来想编写自己的Spark程序,这是必不可少的 视情况而定。目前Spark(直到版本1.1)为其大多数API/子项目提供了Java版本,但不是所有项目。不支持GraphX Java API。因此,如果您的Scala代码使用graphx库,那么它可能无法在Java中工作,除非您编写自定义的粘合代码
即使将Scala类文件反编译为Java,如果程序语义没有错误,也可能无法执行Java代码。我建议您学习JavaAPI,然后用Java重写Scala代码。这也将使您更好地理解Spark API,如果您将来想编写自己的Spark程序,这是必不可少的 不,没有这样的工具可以将Scala源代码转换为Java。不,没有这样的工具可以将Scala源代码转换为Java。我很确定这里的答案是:技术上是的,但结果不是你喜欢的。你想解决什么问题?不依赖任何Scala?没有任何痕迹Scala?能够继续用Java开发最初用Scala编写的代码吗?我编辑了标题以反映问题的实际内容。最初的“Scala代码是否可以翻译成Java”过于泛化,不适用于问题的特定上下文。@maasg但现在的标题讨论了Spark代码和关于使用Java的代码的问题,并且根本不清楚应该转换什么。投票结束这个问题。这个问题对我来说很清楚:“我有使用ApacheSpark的源代码。源代码是用Scala编写的,我想把它转换成Java。”这个问题的标题选得不好,但内容明确地要求将Spark代码从Scala转换成Java。我想我们回答的是问题的主体,而不是问题的标题,对吗?在这种情况下,问题仍然有效@用户1371662作为问题负责人,你怎么看?我很确定这里的答案是:技术上是的,但结果不是你喜欢的。你想解决什么问题?不依赖任何Scala?没有任何痕迹Scala?能够继续用Java开发最初用Scala编写的代码吗?我编辑了标题以反映问题的实际内容。最初的“Scala代码是否可以翻译成Java”过于泛化,不适用于问题的特定上下文。@maasg但现在的标题讨论了Spark代码和关于使用Java的代码的问题,并且根本不清楚应该转换什么。投票结束这个问题。这个问题对我来说很清楚:“我有使用ApacheSpark的源代码。源代码是用Scala编写的,我想把它转换成Java。”这个问题的标题选得不好,但内容明确地要求从Scala t转换Spark代码
val pairs = words.map(w => (w,1)) // count here is of type RDD[(String,Int)]
val counts = words.reduceByKey(_ + _)
JavaPairRDD<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {
public Tuple2<String, Integer> call(String s) { return new Tuple2<String, Integer>(s, 1); }
});
JavaPairRDD<String, Integer> counts = pairs.reduceByKey(new Function2<Integer, Integer>() {
public Integer call(Integer a, Integer b) { return a + b; }
});