【问题标题】:Combining Java and Python in Apache Beam pipeline在 Apache Beam 管道中结合 Java 和 Python
【发布时间】:2019-08-06 21:15:35
【问题描述】:

是否可以在 Apache Beam 中结合 Java 和 Python 转换?

这是用例(即梦想计划):原始输入数据具有非常高的速率,因此需要以相当快的语言(例如 Java)进行一些初始聚合。然后将聚合值提供给一些转换(在 Python 中实现),然后通过一堆机器学习模型(在 Python 中实现)以产生一些预测,然后在一些 Java 代码中再次使用这些预测。

在 Apache Beam 中可以吗?

非常感谢您的帮助!

【问题讨论】:

    标签: java python transform pipeline apache-beam


    【解决方案1】:

    应该是可以的。您需要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,您可以按照相同的方式构建自己的。

    你可以看到这个例子是如何开始的here

    【讨论】:

    • 嘿,安东,这看起来很有趣。您知道调用 Python PTransform(或 DoFn)的基于 Java 的管道的任何示例吗?我看到 Apache 和 Google 都在致力于多 SDK 支持,但不知道这项工作处于什么状态。对此有何见解?
    • @PeterLittig 非常好的问题,你能找到任何例子吗?
    • 这可能是有益的:youtube.com/watch?v=aePbNx8CZw0.
    猜你喜欢
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 2019-04-23
    • 2018-11-05
    • 2022-12-24
    • 1970-01-01
    相关资源
    最近更新 更多