【问题标题】:How to use Pandas in apache beam?如何在 Apache Beam 中使用 Pandas?
【发布时间】:2018-07-26 04:22:40
【问题描述】:

如何在 Apache Beam 中实现 Pandas? 我无法对多个列执行左连接,并且 Pcollections 不支持 sql 查询。甚至 Apache Beam 文档也没有正确装帧。我检查过,但在 Apache Beam 中找不到任何类型的 Panda 实现。 谁能引导我到所需的链接?

【问题讨论】:

  • 如果 Panda 数据帧不能在 Apache Beam 中使用,那么为什么在 gcp 文档中指定了它?

标签: pandas join google-cloud-dataflow apache-beam


【解决方案1】:

这里有些混乱。

pandas 是“支持”的,因为您可以像在没有 Apache Beam 的情况下使用 pandas 库一样使用它,也可以像使用 Beam 管道中的任何其他库一样使用它只要您指定正确的依赖项。它也是“支持”的,因为它默认捆绑为依赖项,因此您不必自己指定它。例如,您可以编写一个DoFn,对每个元素使用pandas 执行一些计算; Beam 对所有元素并行执行每个元素的单独计算。

支持 Apache Beam 目前没有提供与它的特殊集成,例如您不能将PCollection 用作熊猫数据框,反之亦然。 PCollection 物理上不包含任何数据(这对于流式管道应该特别清楚) - 它只是 Beam 执行计划中的占位符节点。

也就是说,使用类似于pandas 的 API 与 Beam PCollections 一起工作肯定是一个好主意,并且可以简化许多现有 pandas 用户的 Beam 学习,但我认为没有人在研究目前正在实施。然而,Beam 社区目前正在讨论将模式添加到 PCollections 的想法,这是朝着这个方向迈出的一步。

【讨论】:

  • 将 pandas 传送到 PCollections 将是一个很棒的功能!
  • @eilalan :正是,这就是我要找的东西,你能不能用一个示例代码来展示这个,因为我是 apache 梁的新手,所以我只是想知道如何管道pandas 到 PCollection。
  • 对不起,我不明白你在问什么。
  • Beam 支持类似的操作,但如上所述,并没有为它们提供类似 pandas 的接口。如果这是您的客户要求的,您需要自己在 Beam API 之上实现它。
  • FWIW,现在正在作为 Beam 的一部分实现。
【解决方案2】:

除了直接从 DoFns 使用 Pandas 外,Beam 现在还有一个 API 可以将 PCollection 作为数据帧进行操作。详情请见https://s.apache.org/simpler-python-pipelines-2020

【解决方案3】:

pandasis supported in the Dataflow SDK 用于 Python 2.x。在撰写本文时,工作人员已经预装了pandas v0.18.1 版本,因此您应该对此没有任何问题。 StackOverflow 不接受您要求社区将您指向外部文档和/或教程的答案,因此也许您应该首先自己尝试实现,然后返回有关什么是/没有失败以及您做了什么的更多信息在遇到错误之前实现。

无论如何,如果您想要实现的是左连接,也许您还可以查看CoGroupByKey 转换类型,它记录在Apache Beam documentation 中。它用于执行具有公共键类型的多个PCollections 的关系连接。在同一页面中,您将能够找到一些示例,它们使用CoGroupByKeyParDo 来连接多个数据对象的内容。

【讨论】:

    猜你喜欢
    • 2020-01-17
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多