【问题标题】:Best Practice for processing unstructured data with Apache Beam使用 Apache Beam 处理非结构化数据的最佳实践
【发布时间】:2021-12-06 19:43:09
【问题描述】:

我们使用 Airflow 进行作业调度,并调用 Apache Beam 进行 ETL 步骤。数据源是非结构化文件(批处理),需要对其进行解析才能转换为 PCollection。在我看来,两个最好的选择是:

  1. 向 Airflow DAG 添加预处理节点以解析文件并写入 parquet 文件,然后由 Beam 处理。
  2. 在 Beam 中编写自定义 IO 连接器以解析非结构化文件并创建 PCollection。

哪个选项更适合 Beam 最佳实践?

【问题讨论】:

    标签: python architecture airflow etl apache-beam


    【解决方案1】:

    如果您以后需要将这些文件重新用于其他管道并且解析这些非结构化文件需要大量时间,我会投票支持 1)。

    另一方面,如果解析这些文件可以并行运行,并且您不需要等待所有文件都准备好,那么我会选择 2)。

    无论如何,我认为这将取决于您的需求和输入数据。

    【讨论】:

    • 这听起来很合理。这些文件不能并行运行,它的旧专有软件会生成 Excel 报告,您需要在其中获取所需的单元格范围。
    【解决方案2】:

    在我看来,ETL 最重要的部分不是完美运行时的作用;但是您如何处理拒绝(错误、不完整的数据等)。

    如果您可以重用代码,那么 #1 有效,但我敢打赌 #2,因为处理 ETL 的所有代码都放在一起。

    如果您不想编写 customIO 但想执行一些外部应用程序来解析数据,您可以使用自定义 docker 容器进行数据流作业。

    【讨论】:

    • 关于处理废品的要点。此外,我还将研究为数据流运行自定义 docker 容器。我没有想到这个选项。
    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2016-09-21
    • 2016-10-23
    • 2023-04-08
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多