【问题标题】:Does the current GoLang SDK for Google Dataflow support Autoscaling and Parallel Processing?当前的 GoLang SDK for Google Dataflow 是否支持自动缩放和并行处理?
【发布时间】:2018-09-19 15:47:49
【问题描述】:

目前使用带有 Python 的 Google Dataflow 进行批处理。这很好用,但是,我有兴趣在不必处理 Java 的情况下从我的数据流作业中获得更快的速度。

使用 Go SDK,我实现了一个简单的管道,它从 Google 存储中读取一系列 100-500mb 文件(使用 textio.Read),进行一些聚合并使用结果更新 CloudSQL。正在读取的文件数量可以从几十个到几百个不等。

当我运行管道时,我可以从日志中看到文件正在被串行读取,而不是并行读取,因此作业需要更长的时间。使用 Python SDK 执行的同一过程会触发自动缩放并在几分钟内运行多次读取。

我尝试使用 --num_workers= 指定工作人员的数量,但是,Dataflow 会在几分钟后将作业缩减为一个实例,并且从日志中看,在实例运行期间没有发生并行读取。

如果我删除 textio.Read 并实现自定义 DoFn 以从 GCS 读取,则会发生类似的情况。读取过程仍然是串行运行的。

我知道当前的 Go SDK 是实验性的并且缺少许多功能,但是,我还没有找到关于并行处理限制的直接参考,here。当前版本的 Go SDK 是否支持 Dataflow 上的并行处理?

提前致谢

【问题讨论】:

    标签: go google-cloud-platform google-cloud-dataflow apache-beam


    【解决方案1】:

    creating my own IO package for the Go SDK 之后设法找到了答案。

    SplitableDoFns 在 Go SDK 中尚不可用。这一关键功能使 Python 和 Java SDK 能够并行执行 IO 操作,因此在规模上比 Go SDK 快得多。

    【讨论】:

      【解决方案2】:

      现在(GO 1.16)它是内置的:

      https://pkg.go.dev/google.golang.org/api/dataflow/v1b3

      【讨论】:

        猜你喜欢
        • 2013-02-24
        • 2020-09-10
        • 1970-01-01
        • 2015-06-07
        • 1970-01-01
        • 2011-05-01
        • 2020-07-19
        • 2022-12-13
        • 1970-01-01
        相关资源
        最近更新 更多