Flink scala项目依赖于flink java项目,因此调用java map而不是scala map

时间:2017-07-23 15:12:19

标签: apache-flink flink-streaming

我想创建一个用scala编写的flink项目。

导入时

'flink-scala_2.11',
'flink-streaming-scala_2.11'
'flink-core', 

我可以运行如下代码:

val someEventScalaStream = myScalaStreamm.map{x=>x.Part3} (it is using scala map function)

但我看到每个人:

flink-connector-rabbitmq_2.11
flink-connector-filesystem_2.11
flink-clients_2.11

所有这些都取决于' flink-java'

因此,当所有这些项目都导入到我的解决方案中时,该项目正在尝试使用java版本的map函数。没有编译。

任何解决方案?

感谢。

1 个答案:

答案 0 :(得分:1)

通常,java和scala的apis被放入单独的包中。所以一定要使用正确的。例如。对于DataStream你有

爪哇:

org.apache.flink.streaming.api.datastream.DataStream

Scala的:

org.apache.flink.streaming.api.scala.DataStream

在scala的这种情况下,建议导入:

org.apache.flink.streaming.api.scala._

如果这不能解决您的问题,您可以在使用Java版map函数时发布一个具体示例吗?