• Flink中设置事件时间


    在flink中设置事件时间时需要将时间的表示转换为毫秒

    如果不需要转换

    def main(args: Array[String]): Unit = {
    
        // ...
        env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)  // 将时间特性设置为事件时间
        env.setParallelism(1)
    
        val clickStream = env
          .fromElements(
            UserClickLog("user_2", "1500", "click", "page_1"),
            UserClickLog("user_2", "2000", "click", "page_1")
          )
          .assignAscendingTimestamps(_.eventTime.toLong * 1000L) // 选择事件时间的字段
        // ...
    
    }

    如果需要转换

    def main(args: Array[String]): Unit = {
    
        // ...
        env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime) // 将时间特性设置为事件时间
    
        val clickStream = env
          .fromElements(
            UserClickLog("user_2", "2019-11-16 17:30:00", "click", "page_1")
          )
          .assignTimestampsAndWatermarks(
            new BoundedOutOfOrdernessTimestampExtractor[UserClickLog](Time.seconds(0))  {
              override def extractTimestamp(t: UserClickLog): Long = {
                val dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
                val dateTime = DateTime.parse(t.eventTime, dateTimeFormatter)
                dateTime.getMillis   // 返回事件时间
              }
            }
          )
        // ...
    }

    Time.seconds(0): MaxOutOfOrderness 延迟时间, 水位线用于延迟窗口的触发时间

  • 相关阅读:
    CSS&JS两种方式实现手风琴式折叠菜单
    MySQL创建数据库/表等基本命令操作
    web注册功能实现
    符合altium designer操作习惯的cadence快捷键设置
    运行Capture.exe找不到cdn_sfl401as.dll
    modelsim遇到的问题(更新)
    1.4 扩展
    1.3 Security
    1.2 Install Extension 安装扩展
    1.1 Modify Template修改模板
  • 原文地址:https://www.cnblogs.com/bitbitbyte/p/13137746.html
Copyright © 2020-2023  润新知