使用API​​调用填充TextIO写

时间:2018-11-23 18:43:52

标签: google-cloud-dataflow apache-beam apache-beam-io

我的问题围绕着启动API调用来获取TextIO输出的文件前缀。

这是我现在拥有的(可以工作的):

results.get(validRecords).setCoder(StringUtf8Coder.of()).apply(Window.<String>into(Sessions.withGapDuration(Duration.standardMinutes(1)))).apply("WriteValidRecords",TextIO.write().to(cloudStorageValidfile).withSuffix(".csv").withWindowedWrites().withNumShards(1));

这也是我所做的更改:

results.get(validRecords).setCoder(StringUtf8Coder.of()).apply(Window.<String>into(Sessions.withGapDuration(Duration.standardSeconds(60)))).apply("WriteRecords", TextIO.write().to(API-CALL).withWindowedWrites().withSuffix("csv").withNumShards(1));

似乎通过API调用,它仅在实例化时被调用一次,然后连续使用相同的前缀。有没有一种方法可以强制每次通话?

1 个答案:

答案 0 :(得分:0)

我想出了这一点,如果您想进行API调用,那么在实例化时就可以了。此后,您将无法进行部署,因为它将以其编译和启动的状态进行部署。因此,如果API调用在那里很好,但是它将仅获得一次值,并将调用交换为已检索的值,然后启动。在其他区域,您可以在每次调用时进行API调用(可序列化功能应该可以使用),但在这里不能。