由于某种原因,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存储桶中创建文件吗?
答案 0 :(得分:0)
因此,在使用DirectRunner
时,TextIO
和使用PubsubIO
时存在一些问题。当使用其他运行器(如数据流运行器)时,该问题消失。
我不能真正解决当地问题,但我希望这对下一个遇到此问题并找到这篇文章的人有所帮助。