当前位置: 首页 > news >正文

自己怎样创建网站药类网站整站模板下载

自己怎样创建网站,药类网站整站模板下载,曲阜网站建设价格,中国建设银行官网首页 网站Flink三种时间属性简介 在Flink SQL中#xff0c;时间属性是一个核心概念#xff0c;它主要用于处理与时间相关的数据流。Flink支持三种时间属性#xff1a;事件时间#xff08;event time#xff09;、处理时间#xff08;processing time#xff09;和摄入时间#…Flink三种时间属性简介 在Flink SQL中时间属性是一个核心概念它主要用于处理与时间相关的数据流。Flink支持三种时间属性事件时间event time、处理时间processing time和摄入时间ingestion time。以下是对这三种时间属性的详细解释 一、事件时间Event Time 定义事件时间指的是数据本身携带的时间即数据在产生时的时间戳。特点 反映了数据实际发生的时间。需要从数据中提取时间戳并可能需要生成watermark来处理乱序数据。在Flink SQL触发计算时使用数据本身携带的时间。 应用场景适用于需要基于数据实际发生时间进行计算的场景如实时日志分析、交易系统等。 二、处理时间Processing Time 定义处理时间指的是具体算子计算数据执行时的机器时间即在Flink集群中处理数据的节点所在机器的本地时间。特点 是最简单的一种时间概念不需要从数据里获取时间也不需要生成watermark。提供了较低的时间精度和确定性因为不同节点的处理时间可能不同。 应用场景适用于对时间精度要求不高或者数据不需要基于事件时间进行处理的场景。定义方式 在DataStream转换时直接指定。在定义Table Schema时指定使用.proctime后缀。在创建表的DDL中指定使用PROCTIME()函数。 三、摄入时间Ingestion Time 定义摄入时间指的是数据从数据源进入Flink的时间。特点 反映了数据被Flink系统接收的时间。适用于数据源与Flink集群之间存在较大时间差的场景。 应用场景在Flink SQL中摄入时间的使用相对较少因为大多数场景更关注数据实际发生的时间事件时间或处理时间。 四、时间属性的应用 在Flink SQL中时间属性主要用于时间窗口的计算、自定义时间语义的计算等。通过定义时间属性可以方便地实现基于时间的聚合、过滤、连接等操作。 注意事项 在一个Flink任务中通常只会选择一个时间属性作为全局时间属性。时间属性的定义方式取决于具体的应用场景和需求。在使用事件时间时需要注意处理乱序数据的问题并合理设置watermark的生成策略。 Flink三种时间属性应用场景 一、事件时间Event Time应用场景 实时日志分析在实时日志分析中通常使用事件时间作为分析的基础。例如需要统计某个时间段内的日志数量或类型使用事件时间可以确保统计结果基于日志实际发生的时间。交易系统在交易系统中事件时间用于处理交易数据的实时分析。例如计算某支股票在特定时间段内的价格波动需要确保时间戳与交易发生的时间一致。实时推荐系统在实时推荐系统中用户行为数据的时间戳是事件时间。通过基于事件时间的分析可以了解用户在不同时间段的行为模式从而提供更加个性化的推荐。 二、处理时间Processing Time应用场景 非实时数据分析对于不需要严格基于事件时间进行分析的场景可以使用处理时间。例如进行批处理任务时不关心数据实际发生的时间只关注任务开始和结束的时间。本地开发和测试在本地开发和测试环境中由于无法模拟真实的事件时间可以使用处理时间进行简化处理。 三、摄入时间Ingestion Time应用场景 数据源与Flink集群时间差较大当数据源与Flink集群之间存在较大的时间差时使用摄入时间可以确保数据在Flink集群中处理的一致性。然而在实际应用中摄入时间的使用相对较少因为大多数场景更关注数据实际发生的时间事件时间或处理时间。 SQL指定时间属性两种方式 在Flink SQL中指定时间属性主要有两种方式以下是对这两种方式的详细解释 一、在创建表的DDL中指定时间属性 事件时间Event Time 在创建表的DDL语句中可以通过增加一个时间戳字段并使用WATERMARK语句来定义事件时间属性。事件时间列的字段类型必须是TIMESTAMP或TIMESTAMP_LTZ类型。WATERMARK语句用于生成水印watermark以处理乱序数据。水印是一个延迟阈值表示在该时间戳之前的所有数据都已经到达。 示例代码 CREATE TABLE user_actions ( user_name STRING, data STRING, user_action_time TIMESTAMP(3), WATERMARK FOR user_action_time AS user_action_time - INTERVAL 5 SECOND ) WITH (...);在这个例子中user_action_time被声明为事件时间并且设置了5秒的水印延迟。 2. 处理时间Processing Time - 在创建表的DDL语句中可以通过增加一个字段并使用PROCTIME()函数来定义处理时间属性。 - PROCTIME()函数是Flink SQL内置的函数用于获取当前处理时间。 示例代码 CREATE TABLE EventTable ( user STRING, url STRING, ts AS PROCTIME() ) WITH (...);在这个例子中ts字段被定义为处理时间属性。 二、在DataStream转换时指定时间属性 事件时间Event Time 在DataStream API中可以通过assignTimestampsAndWatermarks方法来为数据流分配时间戳和水印。这种方法通常用于从外部数据源如Kafka读取数据时为数据分配事件时间。 示例代码伪代码 DataStreamMyEvent stream env.addSource(new FlinkKafkaConsumerMyEvent(...)) .assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractorMyEvent(Time.seconds(5)) { Override public long extractTimestamp(MyEvent event) { return event.getTimestamp(); // 从事件中提取时间戳 } });在这个例子中使用BoundedOutOfOrdernessTimestampExtractor为数据流分配了事件时间并设置了5秒的最大乱序时间。 2. 处理时间Processing Time - 在DataStream API中处理时间是默认的时间属性不需要显式指定。 - 但是如果需要在后续操作中引用处理时间可以通过在Table API中使用.proctime后缀来访问。 示例代码伪代码 Table table tableEnv.fromDataStream(stream, user, temperature, timestamp, pt.proctime as processingTime);在这个例子中pt.proctime被用作处理时间属性并在Table API中进行了访问。 需要注意的是在实际应用中选择哪种方式指定时间属性取决于具体的应用场景和需求。在Flink SQL中通常更倾向于在创建表的DDL中指定时间属性因为这样可以更直观地定义表的模式结构schema并且方便后续的时间相关操作。而在DataStream API中指定时间属性则更灵活适用于需要从外部数据源读取数据并为其分配时间戳的场景。 SQL事件时间案例 以下是一个关于Flink SQL事件时间的案例用于展示如何在Flink SQL中使用事件时间属性进行窗口聚合操作。 案例背景 假设有一个数据流其中包含了用户的点击事件。每个事件都有一个事件时间戳表示用户点击的时间。任务是计算每个用户在每10分钟窗口内的点击次数。 步骤一创建数据源表 首先需要创建一个数据源表并声明事件时间属性。在这个例子中假设数据源是一个Kafka主题并且事件时间戳存储在名为eventTime的字段中。 CREATE TABLE clicks ( userId STRING, eventTime TIMESTAMP(3), -- 事件时间戳 WATERMARK FOR eventTime AS eventTime - INTERVAL 5 SECOND -- 声明水印用于处理乱序数据 ) WITH ( connector kafka, topic clicks_topic, properties.bootstrap.servers localhost:9092, format json, scan.startup.mode earliest-offset );步骤二使用窗口聚合操作 接下来可以使用Flink SQL的窗口聚合操作来计算每个用户在每10分钟窗口内的点击次数。在这个例子中将使用滚动窗口TUMBLE进行聚合。 SELECT userId, TUMBLE_START(eventTime, INTERVAL 10 MINUTE) AS windowStart, -- 窗口开始时间 TUMBLE_END(eventTime, INTERVAL 10 MINUTE) AS windowEnd, -- 窗口结束时间 COUNT(*) AS clickCount -- 点击次数 FROM clicks GROUP BY userId, TUMBLE(eventTime, INTERVAL 10 MINUTE);解释 创建数据源表在创建表时指定了eventTime字段为事件时间属性并设置了5秒的水印延迟。这意味着Flink将等待最多5秒以处理可能到达的乱序数据。窗口聚合操作使用TUMBLE函数定义了一个滚动窗口窗口大小为10分钟。然后按用户ID和窗口进行分组并计算每个分组中的点击次数。结果查询结果将包含用户ID、窗口开始时间、窗口结束时间和点击次数。 注意事项 水印在处理事件时间时水印是非常重要的。它们允许Flink处理乱序数据并确保在窗口聚合时不会遗漏任何数据。时间属性类型事件时间列的字段类型必须是TIMESTAMP或TIMESTAMP_LTZ类型。如果数据源中的时间戳是BIGINT类型表示毫秒或秒则需要在创建表时将其转换为TIMESTAMP类型。窗口类型Flink SQL支持多种类型的窗口如滚动窗口TUMBLE、滑动窗口SLIDE和会话窗口SESSION等。根据具体需求选择合适的窗口类型。 SQL处理时间案例 在Flink SQL中处理时间Processing Time是指数据被具体算子处理时的系统时间。以下是一个基于处理时间的Flink SQL案例用于展示如何使用处理时间属性进行窗口聚合操作。 案例背景 假设有一个数据流其中包含了传感器读取的数据。每个数据都有一个读取时间戳但这个时间戳不是事件发生时的时间而是数据被读取到系统的时间。任务是计算每5分钟内读取的数据量。 步骤一创建数据源表 首先需要创建一个数据源表并声明处理时间属性在Flink SQL中处理时间属性是隐式的不需要显式声明但可以通过特定的函数来引用。在这个例子中假设数据源是一个Socket流。 -- 假设有一个Socket数据源数据格式为id,value,timestamp这里的timestamp是读取时间戳 CREATE TABLE sensor_data ( id STRING, value DOUBLE, timestamp BIGINT -- 读取时间戳单位为毫秒 ) WITH ( connector socket, hostname localhost, port 9999, format csv );步骤二转换时间戳并创建处理时间窗口 由于Flink SQL中的处理时间属性是隐式的不能直接对其进行操作。但是可以通过将读取时间戳转换为TIMESTAMP类型尽管这不是必要的因为处理时间窗口不需要显式的时间戳字段然后使用Flink SQL提供的窗口函数来创建处理时间窗口。不过在这个例子中将直接使用处理时间窗口函数而不进行显式的转换。 -- 使用处理时间滚动窗口计算每5分钟内的数据量 SELECT TUMBLE_START(PROCTIME()) AS window_start, -- 窗口开始时间处理时间 TUMBLE_END(PROCTIME()) AS window_end, -- 窗口结束时间处理时间 COUNT(*) AS data_count -- 数据量 FROM sensor_data GROUP BY TUMBLE(PROCTIME(), INTERVAL 5 MINUTE); -- 使用处理时间滚动窗口窗口大小为5分钟解释 创建数据源表创建了一个名为sensor_data的数据源表它接收来自Socket流的数据。数据包含id、value和timestamp字段其中timestamp是数据被读取到系统的时间戳以毫秒为单位。转换时间戳并创建窗口在这个例子中实际上没有显式地将timestamp字段转换为TIMESTAMP类型因为处理时间窗口不需要这样做。相反直接使用了PROCTIME()函数来获取处理时间并使用TUMBLE函数创建了一个滚动窗口。窗口大小为5分钟意味着每5分钟将计算一次窗口内的数据量。结果查询结果将包含窗口开始时间、窗口结束时间和窗口内的数据量。 注意事项 处理时间属性在Flink SQL中处理时间属性是隐式的不需要显式声明。它表示数据被具体算子处理时的系统时间。窗口函数Flink SQL提供了多种窗口函数如TUMBLE滚动窗口、SLIDE滑动窗口和SESSION会话窗口等。根据具体需求选择合适的窗口函数。数据源在这个例子中使用了Socket作为数据源。在实际应用中数据源可能是Kafka、文件系统或其他数据源。
http://www.w-s-a.com/news/166334/

相关文章:

  • 心理咨询网站模板企业画册封面设计
  • 做网站 南京网站建设的重难点分析
  • 深圳做网站980移动网站开发语言
  • 网站评论怎么做seo关键词优化方法
  • 市级部门网站建设自评报告网站优化文章怎么做
  • 可不可以异地建设网站学做网站培训班要多少钱
  • 茌平网站建设公司免费的云服务器有哪些
  • 手机网站单页面铜陵网站制作公司
  • 网站logo怎么做才清晰千库网官网首页登录
  • 山西省建设银行网站首页长沙网站建设制作
  • 襄阳市做网站 优帮云百度搜索次数统计
  • 自己做视频直播网站盐城做网站多少钱
  • 买个网站服务器多少钱重庆做的好的房产网站
  • 深圳定制建站网站建设推广关键词怎么设置
  • 宝山网站建设 网站外包修改wordpress版权
  • 建立网站的基本步骤新网站多久会被百度收录
  • 软件设计开发流程图廊坊关键词seo排名方案
  • 南山住房和建设局网站网站被k 多久恢复
  • 阿里买域名 电脑做网站做简历哪个网站好
  • 个人网站免费服务器单页网站的域名
  • 网站设计简单讲解小店怎么做网站
  • 校园网站的意义wordpress去除更新
  • 网站开发用python吗常用的网页开发工具有哪些
  • 北京市住房建设投资建设网站做商城网站要哪些流程
  • seo网站改版杭州建设局官网
  • 物流网站建设策划书泰然建设网站
  • 百度做网站的费用采集发布wordpress
  • 网站运维公司有哪些防录屏网站怎么做
  • 昆明做网站seo的网站制作专业
  • 聊城制作手机网站公司wordpress 头条