gpt4 book ai didi

java - 如何在 Java 中使用 Scala 隐式类

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:05:01 25 4
gpt4 key购买 nike

我有一个来自 RecordService API 的 Scala 隐式类,我想在 Java 文件中使用它。

package object spark {

implicit class RecordServiceContext(ctx: SparkContext) {
def recordServiceTextFile(path: String) : RDD[String] = {
new RecordServiceRDD(ctx).setPath(path)
.map(v => v(0).asInstanceOf[Text].toString)
}
}

}

现在我正在尝试使用下面的导入将它导入到 Java 文件中。

import com.cloudera.recordservice.spark.*;

但我无法使用 sparkContext 中的 recordServiceTextFile("path")。

在 Scala 中,导入和它的工作方式略有不同。

最佳答案

这里是包对象中隐式类的简单定义

package object spark {
implicit class Ext(param: Int) {
def a = param + 1
}
}

下面是如何在 java 中使用它

public class Test {
public static void main(String[] args) {
spark.package$.MODULE$.Ext(123).a();
}
}

所以您基本上可以使用 RecordServiceContext 作为包装您的 SparkContext 的方法并添加一个您可以调用的额外方法。这是针对隐式类的优化。

应该是这样的:

SparkContext c = ???
RDD<String> rdd = com.cloudera.recordservice.spark.package$.MODULE$.RecordServiceContext(c)
.recordServiceTextFile("asdf");

关于java - 如何在 Java 中使用 Scala 隐式类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36497932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com