我有关于goolge数据流的问题。
我正在编写一个从PubSub读取数据的数据流管道,并写入BigQuery,它的工作原理。
现在我必须处理后期数据,我正在关注intenet上的一些例子,但它不能正常工作,这是我的代码:
RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+)(\.(uk|ar|cy|ar|tr))?$
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
这是我的pubsub消息:
pipeline.apply(PubsubIO.readStrings()
.withTimestampAttribute("timestamp").fromSubscription(Constants.SUBSCRIBER))
.apply(ParDo.of(new ParseEventFn()))
.apply(Window.<Entity> into(FixedWindows.of(WINDOW_SIZE))
// processing of late data.
.triggering(
AfterWatermark
.pastEndOfWindow()
.withEarlyFirings(
AfterProcessingTime
.pastFirstElementInPane()
.plusDelayOf(DELAY_SIZE))
.withLateFirings(AfterPane.elementCountAtLeast(1)))
.withAllowedLateness(ALLOW_LATE_SIZE)
.accumulatingFiredPanes())
.apply(ParDo.of(new ParseTableRow()))
.apply("Write to BQ", BigQueryIO.<TableRow>write()...
当我手动推送一些消息(转到PupsubTopic并发布)时,时间戳是&lt;&lt; ALLOW_LATE_SIZE但仍传递这些消息。
答案 0 :(得分:0)
您应该正式使用“Duration”对象指定允许的延迟:.withAllowedLateness(Duration.standardMinutes(ALLOW_LATE_SIZE)),假设您已经设置了ALLOW_LATE_SIZE的值(以分钟为单位)。
您可以查看文档page以获取“Google Cloud Dataflow SDK for Java”,特别是“触发器”子章节。