我刚接触过Flink,目前正在测试一个实用程序的框架,该框架包括丰富来自Kafka的具有许多历史特性的事务(例如,相同来源和相同目标之间过去的事务数),然后使用机器学习模型对此事务进行评分。
目前,功能都保持在Flink状态,相同的工作是对丰富的事务进行评分。但是我想把功能计算工作和评分工作分开,我不知道如何做到这一点。
一些额外信息:我正在使用Flink 1.3 (但如果需要的话愿意升级),代码是用Scala编写的
提前感谢您的帮助!
发布于 2018-02-02 19:19:33
像卡夫卡这样的东西可以很好地解决这种脱钩问题。这样,您就可以有一项工作来计算功能,并将其流出卡夫卡主题,该主题是完成评分的工作所消耗的。(旁白:这将使运行几个不同的模型并比较它们的结果这样的事情变得容易。)
有时使用的另一种方法是调用外部API进行评分。异步I/O在这里可能会有所帮助。至少有几个组使用流SQL来计算特性,并将外部模型评分服务包装为UDF。
如果您确实想使用queryable状态,可以使用使用Flink的REST确定作业id。
在Flink前进会议上,有几次关于使用Flink机器学习模型的会谈。举一个例子:ING的快速数据--用Flink和Kafka构建一个流数据平台。
社区正在努力使这一切变得更容易。详情请参见FLIP-23 -模型服务。
https://stackoverflow.com/questions/48580372
复制相似问题