gpt4 book ai didi

java - Apache Beam DataflowRunner 无法写入 AWS S3

转载 作者:行者123 更新时间:2023-12-02 08:56:46 27 4
gpt4 key购买 nike

我们目前正在开发一个 Apache Beam 管道,用于从 GCP Pub/Sub 读取数据并将收到的数据写入 AWS S3 中的存储桶。

我们在 beam-sdks-java-io.amazon-web-services 中使用 TextIO.write 写入 S3。

TextIO.write()
.withWindowedWrites()
.withNumShards(options.getNumShards)
.withTempDirectory(FileBasedSink.convertToFileResourceIfPossible(options.getTempLocation))
.to(FileBasedSink.convertToFileResourceIfPossible(options.getOutputDirectory))

因此,我们首先使用 DirectRunner 在本地测试了该管道,效果很好。 (从 Pub/Sub 传入的数据由管道接收并写入 S3。

options.setRunner(classOf[DirectRunner])
options.setStagingLocation("./outputFolder/staging")
options.setTempLocation("s3://my-s3-bucket/temp")
options.setOutputDirectory("s3://my-s3-bucket/output")

在上一部分中,我们希望使用 Dataflow runner 运行此管道而不更改任何代码,因此我们修改了代码以使用 DataflowRunner

options.setRunner(classOf[DataflowRunner])
options.setStagingLocation("gs://my-gcs-bucket/binaries")
options.setGcpTempLocation("gs://my-gcs-bucket/temp")
options.setTempLocation("s3://my-s3-bucket/temp")
options.setOutputDirectory("s3://my-s3-bucket/output")

使用此设置,管道会从 pub/sub 接收数据,但不会写入 S3。 StackDriver 中的数据流日志中也没有写入任何错误。

有谁知道问题出在哪里吗?管道选项配置是否不正确?或者写入 S3 是否会默默失败?

有人对如何在 beam-sdks-java-io.amazon-web-services 中配置日志以输出 DEBUG 级别日志记录有建议吗?

谢谢!

最佳答案

要使用 DataflowRunner 执行管道,您必须在 PipelineOptions 中设置以下字段:

  • project - The ID of your Google Cloud project
  • runner - The pipeline runner that will parse your program and construct your pipeline.
  • gcpTempLocation - A Cloud Storage path for Dataflow to stage any temporary files. You must create this bucket ahead of time, before running your pipeline.
  • stagingLocation - A Cloud Storage bucket for Dataflow to stage your binary files. If you do not set this option, what you specified for the tempLocation will be used for the staging location as well.

您需要指定project选项,例如options.setProject("my-project-id");.

一件重要的事情是,如果您使用适用于 Java 2.15.0 或更高版本的 Apache Beam SDK,您还必须指定 region 选项。请参阅official documentation了解更多信息。

希望对您有所帮助。

关于java - Apache Beam DataflowRunner 无法写入 AWS S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60446417/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com