小编Sam*_*L-L的帖子

为什么我的处理时间窗口会触发但事件时间却无法触发

我正在努力获取基于事件时间的触发器来触发我的apache光束管道,但是似乎确实能够触发具有处理时间的窗口触发。

我的管道相当基本:

  1. 我收到了一批数据点,其中包括从pubsub读取的毫秒级时间戳,时间戳比最早批处理的数据点稍早。批量处理数据可以减少客户端的工作量和发布费用。

  2. 我提取第二级时间戳并将时间戳应用于各个数据点

  3. 我对数据进行窗口处理,并避免使用全局窗口。

  4. 我将数据按秒进行分组,以供日后按流数据进行分类。

  5. 最终,我最终在分类的几秒钟上使用了滑动窗口,以每秒有条件地将两条消息之一发送到pubsub。

我的问题似乎在步骤3中。

我试图在第3阶段使用最终将在第5阶段使用的相同的窗口化策略,以对分类的秒数进行滑动平均值计算。

我已经尝试过使用withTimestampCombiner(TimestampCombiner.EARLIEST)选项,但这似乎无法解决。

我已经读过有关事件时间使用的.withEarlyFirings方法,但这似乎可以模仿我现有的解决方法。理想情况下,我将能够依靠水印通过窗口的结尾并包含延迟触发。

// De-Batching The Pubsub Message

  static public class UnpackDataPoints extends DoFn<String,String>{
    @ProcessElement
        public  void processElement(@Element String c, OutputReceiver<String> out) {
            JsonArray packedData = new JsonParser().parse(c).getAsJsonArray();
            DateTimeFormatter dtf = DateTimeFormat.forPattern("EEE dd MMM YYYY HH:mm:ss:SSS zzz");
            for (JsonElement acDataPoint: packedData){
                String hereData = acDataPoint.toString();
                DateTime date = dtf.parseDateTime(acDataPoint.getAsJsonObject().get("Timestamp").getAsString());
                Instant eventTimeStamp = date.toInstant();
                out.outputWithTimestamp(hereData,eventTimeStamp);
            }
        }
        }
Run Code Online (Sandbox Code Playgroud)
// Extracting The Second
 static public class ExtractTimeStamp extends DoFn<String,KV<String,String>> {
    @ProcessElement
        public void processElement(ProcessContext …
Run Code Online (Sandbox Code Playgroud)

java google-cloud-dataflow apache-beam

5
推荐指数
1
解决办法
99
查看次数

你可以使用shinyjs来隐藏/显示整个面板吗?

我想知道是否可以在整个闪亮的 wellPanel 上使用闪亮的隐藏和显示功能?我有兴趣这样做是为了有条件地显示两个面板之一,据我所知,我不能在条件面板的条件中使用反应值。

下面是我的想法的一个例子,但是我不知道如何引用在shinyjs函数中给井面板的id。

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  actionButton("test", label = "test"),
  shinyjs::hidden(wellPanel(id = "panelA", "I AM PANEL A")),
  wellPanel(id="panelB", "I AM PANEL B")
)

sever <- function(input,output){
  observeEvent(input$test, {
    shinyjs::showElement(id= "panelA")
    shinyjs::hideElement(id= "panelB")
  })
}

shinyApp(ui=ui,server=server)
Run Code Online (Sandbox Code Playgroud)

r shiny shinyjs

3
推荐指数
1
解决办法
2874
查看次数

标签 统计

apache-beam ×1

google-cloud-dataflow ×1

java ×1

r ×1

shiny ×1

shinyjs ×1