Apache Beam不会将文件写入本地环境或Google Storage

时间:2018-10-24 14:53:26

标签: java google-cloud-storage dataflow beam

由于某种原因,Apache Beam不会将文件写入本地环境或Google Storage。我的目标是从Google PubSub读取数据并将其批量写入Google Storage。为此,我有以下代码:

        pipeline.begin()
            .apply(PubsubIO.readStrings()
                    .fromSubscription("projects/PROJECT/subscriptions/SUBNAME"))
            .apply(ParDo.of(new UpperCaseAndPrint()))
            .apply(Window.into(FixedWindows.of(Duration.millis(1000))))
            .apply(TextIO.write().to("gs://BUCKETNAME/outputData")
                .withWindowedWrites()
                .withNumShards(1));

ParDo函数打印收到的消息,似乎有数据进来:

19806 [direct-runner-worker] INFO  app  - message-4
19807 [direct-runner-worker] INFO  app  - message-3
19808 [direct-runner-worker] INFO  app  - message-2
19809 [direct-runner-worker] INFO  app  - message-1

任何人都知道为什么不会在本地或在Google存储桶中创建文件吗?

1 个答案:

答案 0 :(得分:0)

因此,在使用DirectRunner时,TextIO和使用PubsubIO时存在一些问题。当使用其他运行器(如数据流运行器)时,该问题消失。

我不能真正解决当地问题,但我希望这对下一个遇到此问题并找到这篇文章的人有所帮助。