摘要: Flink 中的状态 在流处理中,数据是连续不断到来的。每个任务进行计算处理时,可以基于当前数据直接转换得到输出结果,也可以依赖一些其他数据。这些由一个任务维护,并且用来计算输出结果的所有数据,就叫作这个任务的状态。 有状态算子 算子任务可以分为无状态和有状态。 无状态的算子任务只需要观察每个独立事 阅读全文
posted @ 2023-01-01 21:30 FireOnFire 阅读(162) 评论(0) 推荐(0)
摘要: 分流 将一条数据流拆分成完全独立的两条、甚至多条流。基于一个 DataStream,得到完全平等的多个子 DataStream。 SingleOutputStreamOperator<Event> stream = env.addSource(new ClickSource()) .assignTi 阅读全文
posted @ 2022-12-31 00:34 FireOnFire 阅读(157) 评论(0) 推荐(0)
摘要: 基本处理函数 函数功能 处理函数主要是定义数据流的转换工作。 处理函数提供了一个“定时服务”,可以通过它访问流中的事件、时间戳、水位线,甚至可以注册“定时事件”。继承了 AbstractRichFunction 抽象类, 所以拥有富函数类的所有特性,同样可以访问状态和其他运行时信息。处理函数还可以直 阅读全文
posted @ 2022-12-30 20:54 FireOnFire 阅读(134) 评论(0) 推荐(0)
摘要: 时间语义 在事件发生之后,生成的数据被收集起来,首先进入分布式消息队列,然后被 Flink 系统中的 Source 算子读取,进而向下游的转换算子(窗口算子)传递,最终由窗口算子进行计算处理。 处理时间(Processing Time):执行处理操作的机器系统时间,是最简单的时间语义。 事件时间(E 阅读全文
posted @ 2022-12-23 15:02 FireOnFire 阅读(278) 评论(0) 推荐(0)
摘要: 执行环境 获取的执行环境是 StreamExecutionEnvironment 类的对象。在代码中创建执行环境的方法,就是调用这个类的静态方法。 getExecutionEnvironment 根据上下文直接得到正确的结果: 如果程序是独立运行的,返回一个本地执行环境。 如果创建了 jar 包,从 阅读全文
posted @ 2022-12-21 20:47 FireOnFire 阅读(75) 评论(0) 推荐(0)
摘要: 概述 SparkStreaming 是用于流式数据的处理。数据输入后可以用高级抽象原语(就是 SparkCore 中的算子,这里只是为了区分),如 map、reduce、window 等进行计算。 SparkStreaming 使用离散化流(discretized stream)作为抽象表示(DSt 阅读全文
posted @ 2022-10-23 22:35 FireOnFire 阅读(97) 评论(0) 推荐(0)
摘要: DataFrame DataFrame 是一种以 RDD 为基础的分布式数据集,类似于二维表格。与 RDD 的区别在于,前者带有 schema 元信息,即 DataFrame。 DataFrame 也是懒执行的,但性能上比 RDD 要高。因为优化了执行计划,查询计划通过 Spark catalyst 阅读全文
posted @ 2022-10-22 12:48 FireOnFire 阅读(75) 评论(0) 推荐(0)
摘要: 论文:Ruslan Salakhutdinov and Andriy Mnih. Probabilistic Matrix Factorization [C]. NeurIPS 2007. https://proceedings.neurips.cc/paper/2007/file/d7322ed7 阅读全文
posted @ 2022-10-21 20:45 FireOnFire 阅读(183) 评论(0) 推荐(0)
摘要: 数据说明 用户有四种行为:搜索、点击、下单、支付。 每行数据用下划线分割不同含义的数据。 每行数据表示用户的一种行为。 如果搜索关键字为 null,这行数据就不是搜索数据。 如果点击的品类 ID 和产品 ID 为-1,这行数据就不是点击数据。 一次可以下单多个商品,所以品类 ID 和产品 ID 可以 阅读全文
posted @ 2022-10-08 22:42 FireOnFire 阅读(123) 评论(0) 推荐(0)
摘要: 累加器 累加器(分布式共享只写变量):用来把 Executor 端变量信息聚合到 Driver 端。在 Driver 程序中定义的变量,在 Executor 端的每个 Task 都会得到这个变量的一份新的副本,每个 Task 更新这些副本的值之后,会传回 Driver 端进行 merge。 对 li 阅读全文
posted @ 2022-10-05 15:00 FireOnFire 阅读(90) 评论(0) 推荐(0)