2016-02-27 76 views
3

我是Scala中的新成员。所以我想在Java中处理Apache Flink的DataSet。但我有一个Scala代码中的DataSet,我想在Java Class的方法中传递。 例如: 在斯卡拉:如何在Apache Flink中将Scala DataSet传递给Java类

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] 需要:org.apache.flink.api.java.ExecutionEnvironment错误 发生在涉及默认参数的应用程序。

我该如何解决这个问题。请帮助我。

回答

3

Scala DataSet的确是围绕Java DataSet的封装。但是,由于方法javaSet是封装私有的,因此您无法访问它。因此,目前将Scala DataSet转换为Java DataSet的方式只是一种非常不好的方式。

为了访问javaSet方法,您必须将您的软件包定义为org.apache.flink的子软件包。尽管如此,这并不是最佳实践。

如果这是一个严格要求的功能,您应该为其提供一个JIRA ticket

+0

我有一个scala文件包:(package org.apache.flink.quickstart)。我需要为java文件创建(包org.apache.flink.quickstart.java)吗?那么我可以发送Scala DS到Java DS? –

+1

您调用'javaSet'的文件必须位于'org.apache.flink'包中。因此,你可以自己写一个helper函数,它存在于'org.apache.flink'包中,并简单地为给定的'DataSet'调用'javaSet'方法。 –

+0

谢谢直到。它工作正常。 :) –