我是Scala的新手 . 所以我想用Java处理Apache Flink的DataSet . 但我在Scala代码中有一个DataSet,我希望在Java类的方法中传递 . 例如:在Scala中:
val dS: DataSet[Vector] = ...
SampleJavaClass.sendDS(ds)
在SampleJavaClass.java中有一个像 sendDs(DataSet<Vector> javaDs)
的方法
我试图这样做,但显示错误消息:类型不匹配;发现:
org.apache.flink.api.scala.DataSet [org.apache.flink.ml.math.Vector] required:org.apache.flink.api.java.ExecutionEnvironment涉及默认参数的应用程序中发生错误 .
我怎样才能解决这个问题 . 请帮帮我 .
2 回答
Scala
DataSet
确实是JavaDataSet
的包装器 . 但是,由于方法javaSet
是包私有,因此您无法访问它 . 因此,目前只有一种非常黑客的方式将ScalaDataSet
转换为JavaDataSet
.要访问
javaSet
方法,您必须将包定义为org.apache.flink
的子包 . 不过,诚然,这不是最佳做法 .如果这是严格要求的功能,则应为其提交JIRA ticket .
Flink中有两个DataSet类java one https://ci.apache.org/projects/flink/flink-docs-master/api/java/index.html?org/apache/flink/api/scala/DataSet.html和scala one . 您可以通过javaSet()从底层的scala DataSet访问java .
我会尝试
这可能会安抚你的代码 .