大数据(9e)Flink时间语义WaterMark

flink生成Watermark之assignTimestampsAndWatermarks 在DataStreamSource对象上调用assignTimestampsAndWatermarks方法,自定义Timestamp提取规则和Watermark生成规则。 文章目录基于AssignerWithPeriodicWatermarks接口 基于AssignerWithPeriodicWatermarks接口 AssignerWithPeriodicWatermarks接口扩展自TimestampAssigner类,其中extractTimestamp方法定义抽取Timestamp,getCurre 阅读详情

1、时间语义

时间语义直译说明
Event Time时间时间事件发生的时间
Process Time处理时间事件发生后,进入到程序(窗口)

事 件 时 间 < 处 理 时 间 事件时间<处理时间 事件时间<处理时间

2、Watermark(水位线)

  • Watermark,可译为水位线,用来标记水流的事件时间进度
  • Watermark作为数据流的一部分在流动,并且携带一个时间戳t
    Watermark(t)表示流的事件时间已经到达t,后续数据的事件时间应当大于t

有序流中的水印

乱序流中的水印

W(t)表示流的事件时间已经到达t,后续不应出现时间时间小于t的数据

2.1、Watermark策略

2.2、Watermark与窗口

  1. WaterMark触发窗口计算
  2. 窗口允许迟到的数据
  3. 侧输出流(sideOutput):处理关窗之后到达的数据

  • W a t e r M a r k ≥ 窗 口 结 束 时 间 WaterMark \ge 窗口结束时间 WaterMark≥窗口结束时间 ,会触发窗口计算
  • 窗 口 结 束 时 间 < W a t e r M a r k < ( 窗 口 结 束 时 间 + 允 许 迟 到 时 间 ) 窗口结束时间 \lt WaterMark \lt (窗口结束时间 + 允许迟到时间) 窗口结束时间<WaterMark<(窗口结束时间+允许迟到时间),每进一条迟到的数据就计算一次
  • W a t e r M a r k ≥ ( 窗 口 结 束 时 间 + 允 许 迟 到 时 间 ) WaterMark \ge (窗口结束时间 + 允许迟到时间) WaterMark≥(窗口结束时间+允许迟到时间) ,会关闭窗口

2.3、多并行度下Watermark的更新和传递

从所有分区中取事件时间最小的WaterMark来广播WaterMark

3、Watermark代码

本地开发环境:WIN10+IDEA

3.1、pom.xml

<!-- 配置 -->
<properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <flink.version>1.14.6</flink.version>
    <scala.binary.version>2.12</scala.binary.version>
    <slf4j.version>2.0.3</slf4j.version>
    <log4j.version>2.17.2</log4j.version>
</properties>
<!-- https://mvnrepository.com/ -->
<dependencies>
    <!-- Flink -->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-java</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-clients_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-runtime-web_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <!-- 日志 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-to-slf4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>
</dependencies>

3.2、log4j.properties

log4j.rootLogger=error, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

3.3、java

Watermark策略
forMonotonousTimestamps()是时间单调递增的水位线策略
相当于 forBoundedOutOfOrderness(Duration.ofSeconds(0))
import org.apache.flink.api.common.eventtime.SerializableTimestampAssigner;
import org.apache.flink.api.common.eventtime.WatermarkStrategy;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
import org.apache.flink.streaming.api.functions.windowing.ProcessAllWindowFunction;
import org.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindows;
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.streaming.api.windowing.windows.TimeWindow;
import org.apache.flink.util.Collector;

import java.time.Duration;
import java.util.Scanner;

public class Hello {
    public static void main(String[] args) throws Exception {
        //创建执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        //设置并行度
        env.setParallelism(1);
        //Watermark策略(最大事件时间-5秒)
        WatermarkStrategy<Long> w = WatermarkStrategy
                .<Long>forBoundedOutOfOrderness(Duration.ofSeconds(5))
                .withTimestampAssigner((SerializableTimestampAssigner<Long>) (s, l) -> s * 1000L);
        //加入自定义数据源
        DataStreamSource<String> dss = env.addSource(new MySource());
        //################################### 逻辑 ########################################
        dss
                //String转Long
                .map(Long::valueOf)
                //确定时间水位线
                .assignTimestampsAndWatermarks(w)
                //事件时间滚动窗口
                .windowAll(TumblingEventTimeWindows.of(Time.seconds(1000)))
                //允许迟到
                .allowedLateness(Time.seconds(1))
                //窗口内数据处理
                .process(new ProcessAllWindowFunction<Long, String, TimeWindow>() {
                    @Override
                    public void process(Context context, Iterable<Long> in, Collector<String> out) {
                        //打印窗口范围
                        System.out.println(context.window().toString());
                        //在窗口内,收集元素
                        out.collect(String.valueOf(in));
                    }
                })
                //打印结果
                .print();
        //################################### 逻辑 ########################################
        env.execute();
    }

    public static class MySource implements SourceFunction<String> {
        public MySource() {}

        @Override
        public void run(SourceContext<String> sc) {
            Scanner scanner = new Scanner(System.in);
            while (true) {
                String str = scanner.nextLine().trim();
                if (str.equals("STOP")) {break;}
                if (!str.equals("")) {sc.collect(str);}
            }
            scanner.close();
        }

        @Override
        public void cancel() {}
    }
}

3.4、测试结果

窗口大小1000秒,Watermark=事件时间-5秒,允许迟到1秒
绿色为秒数输入,白色为窗口结果输出

4、多并行度Watermark代码

import org.apache.flink.api.common.eventtime.SerializableTimestampAssigner;
import org.apache.flink.api.common.eventtime.WatermarkStrategy;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
import org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction;
import org.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindows;
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.streaming.api.windowing.windows.TimeWindow;
import org.apache.flink.util.Collector;

import java.time.Duration;
import java.util.Scanner;

public class Hello {
    public static void main(String[] args) throws Exception {
        //创建执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        //设置并行度
        env.setParallelism(2);
        //Watermark策略
        WatermarkStrategy<Long> w = WatermarkStrategy
                .<Long>forBoundedOutOfOrderness(Duration.ofSeconds(5))
                .withTimestampAssigner((SerializableTimestampAssigner<Long>) (s, l) -> s * 1000L);
        //加入自定义数据源
        DataStreamSource<String> dss = env.addSource(new MySource());
        //################################### 业务逻辑 ########################################
        dss
                //String转Long
                .map(Long::valueOf)
                //确定时间水位线
                .assignTimestampsAndWatermarks(w)
                //分区
                .keyBy(s -> s % 2)
                //事件时间滚动窗口
                .window(TumblingEventTimeWindows.of(Time.seconds(1000)))
                //窗口内数据处理
                .process(new ProcessWindowFunction<Long, String, Long, TimeWindow>() {
                    @Override
                    public void process(Long key, Context context, Iterable<Long> in, Collector<String> out) {
                        //打印当前分区和水位线
                        System.out.println("分区:" + key + ";水位线:" + context.currentWatermark());
                        //打印窗口范围
                        System.out.println(context.window().toString());
                        //在窗口内,收集元素
                        out.collect(String.valueOf(in));
                    }
                })
                //打印
                .print("输出");
        //################################### 业务逻辑 ########################################
        env.execute();
    }

    public static class MySource implements SourceFunction<String> {
        public MySource() {}

        @Override
        public void run(SourceContext<String> sc) {
            Scanner scanner = new Scanner(System.in);
            while (true) {
                String str = scanner.nextLine().trim();
                if (str.equals("STOP")) {break;}
                if (!str.equals("")) {sc.collect(str);}
            }
            scanner.close();
        }

        @Override
        public void cancel() {}
    }
}

测试结果(并行度=2)

5、Appendix

en🔉cn
watermarkˈwɔːtərmɑːrkn. 水印;水位标志;vt. 在……上印水印(图案)
gapɡæpn. 缝隙,缺口;(时间上的)间隔
tumblingˈtʌmblɪŋn. 翻腾运动
tumbleˈtʌmblv. 翻滚;n. 跌倒,滚落;(数量、价值)暴跌;混乱,杂乱;翻跟头
in order按顺序
out of order次序颠倒
boundedbaʊndɪdadj. 有界限的
assignəˈsaɪnv. 布置(任务);分配(某物);派遣;确定(价值、功能、时间、地点)
monotonousməˈnɑːtənəsadj. 单调乏味的
南京大数据开发实战:基于Flink与Iceberg构建实时用户行为分析平台 实时数据处理是现代大数据架构的核心能力,其原理在于对持续产生的数据流进行低延迟的采集、处理与分析,以支持秒级甚至毫秒级的业务决策。这项技术的核心价值在于将数据处理从传统的T+1批处理模式,升级为能够即时响应业务变化的实时模式,广泛应用于实时风控、实时推荐、物联网监控和运营看板等场景。Apache Flink作为当前流处理领域的事实标准,凭借其高吞吐、低延迟和精确一次(Exactly-Once)语义保障,成为构建实时数据管道的首选。而数据湖技术,如Apache Iceberg,通过提供开放的表格格式和ACID 阅读详情

相关推荐

Flink 源码解读系列 DataStream 带 Watermark 生成的时间戳分配器

这篇文章主要从源码角度讲一下 Flink DataStream 中带 Watermark 生成的时间戳分配器。我们通常通过 DataStream 的 assignTimestampsAndWatermarks 方法分配时间戳并生成 Watermark。这两种时间戳分配器均是 TimestampAssigner 的子类,具体继承关系如下图所示。在为元素分配时间戳的基础之上增加了生成 Watermark 的逻辑,可以理解是一个实现 Watermark 生成逻辑的时间戳分配器。

SmartSi 1423

Flink 源码学习|watermark 时间戳指定器

在每次接收到消息时,获取系统时间以更新实例属性中存储的系统时间最大值,并将当前存储的系统时间最大值作为时间戳返回。之所以这样实现,是为了保证即使系统时间被修改(例如配置了多节点时间同步)时,输出的时间戳仍然是单调递增的。这个时间戳分配器适用于已指定有效时间戳的场景,例如从 Kafka 中提取的数据。中提取的时间,将被包括窗口函数在内的所有使用了事件时间的算子使用。存储当前获取到的系统时间的最大值;中,是从事件数据中提取事件时间的工具,中有 3 个类或接口继承了。方法,并直接使用参数。

长行 869

Flink assignTimestampsAndWatermarks 深度解析:时间语义与水印生成

在Apache Flink中,

大模型大数据攻城狮的专栏 1053

大数据专家教你学Flink:用EventTime与WaterMark进行流数据处理

最简单的情况下,这也最容易理解:所有进入到Flink处理系统的流数据,都是在外部的其它系统中产生的,它们产生后具有了事件时间,经过传输后,进入到Flink处理系统,理论上(如果所有系统都具有相同系统时钟)该事件时间对应的时间戳要早于进入到Flink处理系统中进行处理的时间戳,但实际应用中会出现数据记录乱序、延迟到达等问题,这也是非常普遍的。WaterMark带有一个时间戳,假设为X,进入到数据处理系统中的数据元素具有事件时间,记为Y,如果Y

2401_83384536的博客 1532

flink实战--flink整合kafka (kafka source 与 kafka sink)

简介 Flink提供的Kafka连接器,用于向Kafka主题读取或写入数据。Flink Kafka Consumer集成了Flink的检查点机制,可提供一次性处理语义。为实现这一目标,Flink并不完全依赖kafka的消费者群体偏移跟踪,而是在内部跟踪和检查这些偏移。 Maven 依赖 支持到的版本 生产者和消费者类的名成 Kafka version ...

阿华田的博客 1万+

《大数据Flink:核心技术深度挖掘与应用实践》

本文从流处理的本质出发,系统拆解Apache Flink的核心技术体系——从“流优先”的设计哲学到Checkpoint/State的底层机制,从Window/Watermark的乱序处理到Exactly-Once的分布式快照算法。结合生产级实践案例(如电商实时推荐、金融实时风控),深入探讨Flink在复杂场景的落地策略,同时展望Flink与AI、边缘计算的融合趋势。无论你是流处理入门者还是资深架构师,都能从本文获得从理论到实践的完整知识图谱。时间窗口的数学模型:给定时间属性tet(e)te。

SuperAGI2025 1007

大数据Hadoop之——实时计算流计算引擎Flink(Flink环境部署)

文章目录一、概述 一、概述 Flink核心是一个流式的数据流执行引擎,并且能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用。其针对数据流的分布式计算提供了数据分布,数据通信及容错机制等功能。基于流执行引擎,Flink提供了跟多高抽象层的API便于用户编写分布式任务。下面介绍常见的几种API; DataSet API: 对静态数据进行批处理作业,将静态数据抽象成分布式的数据集,用户可以方便的使用Flink提供的各种操作符对分布式数据集进行处理,支持Java,Scala和python;

匠人精神,持之以恒! 5468

掌握大数据领域流处理的核心要点

当你在电商APP刷到「猜你喜欢」的实时推荐,或是银行系统秒级拦截异常交易时,背后都藏着流处理的「流动魔法」——它让无界的实时数据像流水一样被精准、高效地处理,而非批处理的「攒够了再算」。但流处理的学习曲线并不平坦:低延迟与准确性如何平衡?状态怎么管理?乱序数据怎么处理?窗口计算为何总出错?本文用「生活化比喻+Step-by-Step推理+代码实战」拆解流处理的9个核心要点,从「什么是流」的底层概念,到「用Flink实现实时反欺诈」的实际场景,帮你真正掌握流处理的本质。

小白菜的博客 435

Flink中watermark的生成规则及其功能【大数据常见问题】

每个窗口都有属于自己的最大等待延迟数据的时间限制,窗口结束时间+延迟时间=最大waterMark值,即当waterMark值大于的上述计算出的最大waterMark值,该窗口内的数据就属于迟到的数据,无法参与window计算。这里的延迟3.5s是我们假设一个数据到达的时候,比他早3.5s的数据肯定也都到达了,这个是需要根据经验推算的,加入D到达以后有到达了一个E,event-time=6,但是由于0~10的时间窗口已经开始计算了,所以E就丢了。触发计算的时候,会将AC(因为他们都小于10)都计算进去。

zy1992As的博客 261

大数据Flink(九十三):DML:Order By、Limit 子句

实时任务中,Order By 子句中必须要有时间属性字段,并且时间属性必须为升序时间属性,即 WATERMARK FOR rowtime_column AS rowtime_column - INTERVAL '0.001' SECOND 或者。,但在实时任务中一般用的非常少。

Lansonli(蓝深李)的博客 614

thinkphp5.0.24反序列化漏洞分析

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

m0_67392182的博客 1871

Flink详解

通过源码看Flink核心的执行流程 https://github.com/bethunebtj/flink_tutorial.git

weixin_43326083的博客 721

AI 大模型在电商精准营销中的应用

例如,对于用户 A 和用户 B,通过比较他们对共同评价过的商品的评分差异来确定相似度。其中,(Gain(D,a))表示特征(a)对数据集(D)的信息增益,(Ent(D))表示数据集(D)的信息熵,(V)表示特征(a)的取值个数,(D^{v})表示特征(a)取值为(v)的样本子集。其中,(sim(A,B))表示用户 A 和用户 B 的相似度,(I)表示用户 A 和用户 B 共同评价过的商品集合,(R_{A,i})和(R_{B,i})分别表示用户 A 和用户 B 对商品(i)的评分。(三)营销活动效果预测。

alittlehippo的博客 1627

零基础学会flink,保姆级超详细教学

本文提供了一个三周学会Apache Flink的详细学习路线,从环境搭建到项目实战,适合零基础开发者快速掌握Flink流处理技术。 学习路线概览: 环境搭建(JDK11、Maven、IntelliJ IDEA和Flink集群) 基础入门(WordCount程序) 核心API学习(DataStream算子、时间窗口、状态管理) 高级功能(Table API/SQL、Kafka连接器) 综合项目实战(实时订单统计/用户行为分析) 第一天重点: 详细演示了开发环境配置(JDK11安装验证、Maven配置、IDEA

korry24的博客 292

Palantir解密:从企业数字化能力构成说起,“本体”如何破解现代企业数据应用难题?

抛开技术外壳来看,Palantir“本体”的理念内核其实并不复杂:构建一个统一、可操作的数字现实,以高效驱动决策与行动。其技术实施和产品沉淀的过程诚然是高复杂性、高难度的,但这正体现了Palantir所代表的新硅谷“All in AI+”的战略决心。对于我们而言,必须深刻认识到:企业数字化能力建设既不是高精尖技术的简单堆砌,也不是局部场景的数字化改良,而是一场企业级的“数字孪生”——关乎战略、组织与业务全域的体系能力的重塑。

SZSDQJC的博客 1687

从一个 ASIN 看透亚马逊:商品模型背后的增长飞轮

在亚马逊电商体系中,每件商品背后都有一套严密的商品建模逻辑。本篇文章以“ASIN 的一生”为线索,系统拆解了亚马逊的商品模型:从飞轮战略出发,剖析 SDP(Single Detail Page)机制如何实现标准化展示;再到 ASIN 编码、父子变体结构与 Offer 分离模型,逐层解析商品信息如何被建构、聚合与呈现。通过图解与案例,文章帮助读者理解商品建品流程、同款聚合原则、价格控制机制等核心逻辑,避免常见运营误区,是一份面向运营、产品、技术人员的实用参考指南。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 13万+

flink详解

Flink的时间与watermarks详解 https://jiamaoxiang.top/2020/04/17/Flink%E5%9F%BA%E4%BA%8E%E6%97%B6%E9%97%B4%E4%B8%8E%E7%AA%97%E5%8F%A3%E7%9A%84%E7%AE%97%E5%AD%90/ Flink 源码阅读笔记(12)- 时间、定时器和窗口 https://blog.jrwang.me/2019/flink-source-code-time-and-window/ 【数仓大全】传统数仓、

MyNameIsWangYi的博客 384

【WRFDA教程】客观分析(OBSGRID)详解

客观分析(OBSGRID)详解

WW、forever的博客 1134

【Flink 】从入门到生产实战:一篇文章吃透流处理核心

本文基于 Flink 1.18/1.19 重构了实时流处理核心知识,摒弃过时的 DataSet API 与旧版 Source/Sink 接口,聚焦流批一体的 DataStream API。重点梳理了 Flink 执行架构、提交流程、部署模式及新特性,涵盖 Source、Transformation、Sink 的最新写法,强调 Watermark 机制、Exactly-Once 保障、状态管理与数据倾斜应对策略。结合生产踩坑经验,为新手提供实战指导,助力高效构建低延迟、高可靠的实时数据处理系统。

zy123456nn的博客 404

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的远距离停车位检测系统(深度学习代码+UI界面+训练数据集)

本文详细介绍了基于YOLOv5/YOLOv6/YOLOv7/YOLOv8深度学习模型的远距离停车位检测系统的完整实现方案。该系统能够准确识别200米范围内的停车位状态,为智能停车场管理系统、自动驾驶车辆提供关键的视觉感知能力。文章涵盖算法原理、数据集构建、模型训练、系统实现及优化策略,并提供完整的代码实现和UI界面设计。关键词:YOLO系列,深度学习,停车位检测,计算机视觉,智能交通系统pythonimport cv2import os"""创建数据存储目录""""""定时采集图像"""

YOLO 186

MATLAB 基于 Baker 映射和 Logistic 混沌序列的图像加解密实现

图像加密是信息安全领域的重要研究方向,在数字版权保护、隐私保护等领域有着广泛应用。本文将介绍基于 MATLAB 的 Baker 映射和 Logistic 混沌序列的图像加解密算法,该算法利用混沌系统的初值敏感性和伪随机性,能够有效地对图像进行加密和解密。基于 Baker 映射和 Logistic 混沌序列的图像加解密算法是一种有效的方法,可以应用于数字版权保护、隐私保护等领域。MATLAB 提供了强大的工具和函数,可以方便地实现该算法。

走向CTO的路上... 937

在Flink如此火热的时期,这些Flink必备面试题,来看看你掌握了多少(一)

随着近几年大数据的飞速发展,不仅对数据量的存储和计算有着非常高的要求,在实时性方面,也是有着很高的要求。说到实时性,就不得不说到Flink了。在Flink发展的如火如荼的今天,也相信有许多公司在使用。这个小编在今年面试的时候深有体会,虽然也被问得一头雾水~~哈哈。接下来小编就分享一篇关于Flink的必备面试题。希望在复习的同时也能帮助到大家。由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教! 小编博客主页:https://blog.youkuaiyun.com/Mr_Yang888 尽管当前水平可.

Mr_Yang888的博客 1017

在WIN10系统中安装TIA博途V18,重启后提示安装介质不可用,请插入DVD 或检查网络连接的解决办法

在WIN10系统中安装TIA博途V18,重启后提示安装介质不可用,请插入DVD 或检查网络连接的解决办法

Robot_PLC_HMI_Automation 1万+

flink常见故障排除

flink常见故障排除

第一片心意的博客 7482

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大数据工程师必掌握的5大核心框架:Hadoop、Spark、Flink、Kafka、Hive

分布式数据处理是现代数据平台的基石,其本质是在海量、高吞吐、低延迟与强一致性等多重约束下实现可靠计算。Apache Hadoop提供高容错的分布式存储底座,Apache Spark以统一引擎支撑批流一体开发,Apache Flink凭借事件时间与状态管理保障毫秒级实时决策,Apache Kafka构建解耦、可重放的数据通信中枢,Apache Hive则通过元数据抽象弥合工程与分析的认知鸿沟。这五大框架共同构成从数据接入、存储、计算到查询的完整闭环,广泛应用于电商用户行为分析、金融风控、物联网设备管理等典型场

weixin_30902251的博客 441

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 图解-使用【变异系数】赋予权重,并比较效果
下一篇: 数据开发 的 代码规范 以及 代码评审脚本
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值