Apache flink 从Flink调用外部脚本
对你们中的一些人来说,这似乎是一个非常复杂的问题。我想使用ApacheFlink对来自SocketStream的数据应用一些算法。但是,这些算法是我使用Scala的Apache flink 从Flink调用外部脚本,apache-flink,Apache Flink,对你们中的一些人来说,这似乎是一个非常复杂的问题。我想使用ApacheFlink对来自SocketStream的数据应用一些算法。但是,这些算法是我使用Scala的sys.process包运行的外部可执行文件。以下是我希望Flink做的事情: 从SocketStream获取单个行: val text=env.socketTextStream(主机名、端口) val lines=text.flatMap{{{uu.toLowerCase.split(\\n”)过滤器{{{uu.nonEmpty}}
sys.process
包运行的外部可执行文件。以下是我希望Flink做的事情:
val text=env.socketTextStream(主机名、端口)
val lines=text.flatMap{{{uu.toLowerCase.split(\\n”)过滤器{{{uu.nonEmpty}}
var op=“./Somefile.py”+行代码>
op.print()
显然,这不是我想要做的事情的正确方法,因为
op
不像行
不是数据接收器,因此没有打印任何内容。有什么方法可以实现这一点吗?如果将所有参数都放在一个字符串值中,则可以从MapFunction
调用外部可执行文件
这看起来像:
val args: DataStream[String] = env.socketTextStream(hostName, port)
// assume each text line has all elements
val out: DataStream[String] = args.map(new ExternalCaller())
// print result
out.print()
与
我觉得可以用
map
完成,但这解决了我的问题。谢谢
class ExternalCaller extends MapFunction[String, String] {
override def map(args: String): String = {
// call external executable with args here and return output
}
}