簡體   English   中英

如何在Apache Flink中將Scala DataSet傳遞給Java類

[英]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。 HTMLscala之一 您可以通過javaSet()從底層的scala DataSet訪問java。

我會嘗試

SampleJavaClass.sendDS(ds.javaSet())

這可能會安撫你的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM