是否可以在 Apache Beam 中结合 Java 和 Python 转换?
这是用例(即梦想计划):原始输入数据具有非常高的速率,因此需要使用相当快的语言(例如 Java)进行一些初始聚合。然后将聚合值提供给一些转换(在 Python 中实现),然后传递到一堆机器学习模型(在 Python 中实现)以生成一些预测,然后在一些 Java 代码中再次使用这些预测。
在 Apache Beam 中可能吗?
非常感谢您的帮助!
最佳答案
应该是可以的。您需要一个 ExternalTransform
和扩展服务。
参见here执行此操作的测试管道:
counts = (lines
| 'split' >> (beam.ParDo(WordExtractingDoFn())
.with_output_types(bytes))
| 'count' >> beam.ExternalTransform(
'beam:transforms:xlang:count', None, EXPANSION_SERVICE_ADDR))
这里 beam:transforms:xlang:count
是扩展服务应该知道的转换的 URN。此示例使用自定义 expansion service将该 URN 扩展为 Java PTransform
,您可以按照相同的思路构建自己的 URN。
你可以看到这个例子是如何启动的here .
关于java - 在 Apache Beam 管道中结合 Java 和 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57384102/