Flink scala 项目依赖于 flink java 项目,所以调用 java map 而不是 scala map
Flink scala project depends on flink java project so java map called instead of scala map
我想创建一个用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 版本的地图功能,但无法编译。
有什么解决办法吗?
谢谢。
一般来说java和scala的api是放在不同的包里的。所以一定要使用正确的。例如。对于 DataStream
你有
Java:
org.apache.flink.streaming.api.datastream.DataStream
斯卡拉:
org.apache.flink.streaming.api.scala.DataStream
在这种情况下,建议在 scala 中导入:
org.apache.flink.streaming.api.scala._
如果这没有涵盖您的问题,您能否 post 一个使用 map
函数的 java 版本的具体示例?
我想创建一个用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 版本的地图功能,但无法编译。
有什么解决办法吗?
谢谢。
一般来说java和scala的api是放在不同的包里的。所以一定要使用正确的。例如。对于 DataStream
你有
Java:
org.apache.flink.streaming.api.datastream.DataStream
斯卡拉:
org.apache.flink.streaming.api.scala.DataStream
在这种情况下,建议在 scala 中导入:
org.apache.flink.streaming.api.scala._
如果这没有涵盖您的问题,您能否 post 一个使用 map
函数的 java 版本的具体示例?