[英]How to pass Scala DataSet to Java Class in Apache Flink
我是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]:org.apache.flink.api.java.ExecutionEnvironment涉及默認參數的應用程序中發生錯誤。
我怎樣才能解決這個問題。 請幫幫我。
Scala DataSet
確實是Java DataSet
的包裝器。 但是,由於方法javaSet
是包私有的,因此無法訪問它。 因此,目前只有一種將Scala DataSet
轉換為Java DataSet
的非常繁瑣的方法。
要訪問javaSet
方法,必須將包定義為org.apache.flink
的子包。 不過,誠然,這不是最佳做法。
如果這是嚴格要求的功能,您應該為其提交JIRA票證 。
Flink中有兩個DataSet類,一個是Java,一個是 https://ci.apache.org/projects/flink/flink-docs-master/api/java/index.html?org/apache/flink/api/scala/DataSet。 HTML和scala之一 。 您可以通過javaSet()從底層的scala DataSet訪問java。
我會嘗試
SampleJavaClass.sendDS(ds.javaSet())
這可能會安撫你的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.