2016-02-27 29 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

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

相關問題