@SmartSi
Stay Hungry, Stay Foolish
展开
-
2024年12月数据月报
2024年12月大数据月报,为您准备了阿里、字节、百度等大厂150多篇实践案例原创 2025-01-04 09:44:10 · 1594 阅读 · 0 评论 -
Spark Streaming 自定义 Receiver
在大数据时代,实时数据处理变得愈发重要。Apache Spark 作为一个强大的大数据处理引擎,其 Spark Streaming 模块为实时数据流处理提供了高效的解决方案。虽然 Spark Streaming 提供了多种内置的 Receiver(如 Kafka、Flume、Socket 等),但在实际应用中,我们可能需要处理特定的数据源或自定义的数据接收逻辑,这就需要我们自定义 Receiver。本文将详细介绍如何在 Spark Streaming 中定义和使用自定义 Receiver,包括其定义步骤、关原创 2025-01-04 22:40:09 · 924 阅读 · 0 评论 -
Spark Streaming 输出到 MySQL
这一篇文章我们来介绍 Spark Streaming 如何将数据输出到 MySQL 中。主要介绍如何在 Spark Streaming 中创建可序列化的类来建立 MySQL 连接。另外我们可以直接建立连接,但对于大规模存储一般要用到连接池,所以也会介绍如何应用 Druid 连接池。原创 2024-12-31 17:07:16 · 1053 阅读 · 0 评论 -
Spark Streaming 为什么读取不到历史老文件
在文章中我们介绍了 Spark Streaming 读取不到历史老文件的原因并提供了解决方案原创 2024-12-21 18:00:01 · 990 阅读 · 0 评论 -
Spark Streaming Connector 从文件读取数据
我们在入门示例中使用通过 TCP 套接字连接接收文本数据。除了套接字,StreamingContext API 还提供了从文件创建 DStreams 作为输入源的方法,并且提供了多个版本。原创 2024-12-15 17:09:16 · 916 阅读 · 0 评论 -
Spark Streaming 程序结构
在进入如何编写自己的 Spark Streaming 程序之前,让我们看看一个简单的 Spark Streaming 程序的具体样子,更加直观的认识 Spark Streaming 的程序结构。我们会从一个实例入手来讲解 Spark Streaming 的程序结构原创 2024-12-07 19:50:05 · 896 阅读 · 0 评论 -
Spark Streaming 第一个程序 WordCount
Spark Streaming 是 Spark Core API 的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等特点。数据可以从诸如 Kafka,Flume,Kinesis 或 TCP 套接字等许多源中提取,并且可以使用由诸如 map,reduce,join 或者 window 等高级函数组成的复杂算法来处理。最后,处理后的数据可以推送到文件系统、数据库、实时仪表盘中。事实上,你可以将处理后的数据应用到 Spark 的机器学习算法、 图处理算法中去。内部工作原理如下图所示。原创 2022-10-09 18:34:20 · 371 阅读 · 0 评论 -
Spark Streaming 如何使用 MapWithState 实现有状态应用
有时候可能需要依赖流中前几个批次中的元素来计算当前批次的结果。例如,计算流中所有元素的和,计算当前元素值与之前元素的差值。这种运算会在遍历整个流的期间不断更新计算状态。在 Spark Streaming 中提供了和 MapWithState 函数来实现。本文主要介绍如何使用 MapWithState 函数实现有状态应用。原创 2023-09-10 09:05:55 · 208 阅读 · 0 评论 -
Spark Streaming 如何使用 UpdateStateByKey 实现有状态应用
有时候可能需要依赖流中前几个批次中的元素来计算当前批次的结果。例如,计算流中所有元素的和,计算当前元素值与之前元素的差值。这种运算会在遍历整个流的期间不断更新计算状态。在 Spark Streaming 中提供了 updateStateByKey 和 MapWithState 函数来实现。本文主要介绍如何使用 updateStateByKey 函数实现有状态应用。原创 2023-09-09 15:44:59 · 215 阅读 · 0 评论 -
2024年11月大数据月报
2024年11月数据月报,为您准备了阿里、字节、百度等大厂140多篇实践案例原创 2024-12-01 16:14:39 · 1508 阅读 · 0 评论 -
JavaCC 实战七:支持乘法和除法的计数器
在上一篇文章我们实现了一个支持加法、减法运算的计算器。为了得到一个更实用的计算器,我们需要更多的运算符,例如乘法和除法。这篇文章介绍如何为计算器添加乘法和除法运算。原创 2024-11-17 10:02:33 · 728 阅读 · 0 评论 -
JavaCC 实战六:支持减法运算的计算器
上一篇文章中我们实现了一个支持整数、小数加法运算的计算器。为了得到一个更实用的计算器,我们需要更多的运算符,例如减法、乘法和除法。这篇文章介绍如何为计算器添加减法运算。原创 2024-11-16 23:31:45 · 546 阅读 · 0 评论 -
JavaCC 实战五:支持小数运算的计算器
上一篇文章我们实现了一个只支持整数加法运算的计算器。为了得到一个更实用的计算器,除了支持整数运算,也要支持小数运算。这篇文章介绍如何为计算器添加小数加法运算。原创 2024-11-16 19:38:37 · 675 阅读 · 0 评论 -
ANTLR4 实战一:初识语法分析器生成工具 ANTLR
Antlr 是一款强大的语法分析器生成工具,可用于读取、处理、执行以及翻译结构化的文本或二进制文件。被广泛应用于学术领域和工业生产实践,是众多语言、工具和框架的基石。Twitter 搜索使用 Antlr 进行语法分析,每天处理超过20亿次查询;Hadoop 生态系统中的 Hive、Pig、数据仓库和分析系统所使用的语言都用到了 Antlr;Lex Machina 将 Antlr 用于分析法律文本;Oracle 公司在 SQL 开发者 IDE 和迁移工具中使用了 Antlr;原创 2022-12-30 21:30:01 · 995 阅读 · 0 评论 -
JavaCC 实战四:支持加法运算的计算器
可以使用 Java 代码来扩展 BNF 生产式,使其在输入合法时输出整数加和的结果。原创 2024-11-10 15:16:35 · 884 阅读 · 0 评论 -
JavaCC 实战三:整数加法运算
在这篇文章中介绍如何使用 Javacc 实现判断输入是否是一个合法的加法运算原创 2024-11-10 11:28:02 · 1088 阅读 · 0 评论 -
JavaCC 实战二:入门介绍
JavaCC 是一个解析器生成器和词法分析器生成器。解析器和词法分析器是处理字符序列输入的软件组件。编译器(Compilers)和解释器(Interpreters)结合词法分析器和解析器来解码程序文件。当然,词法分析器和解析器也可以用于其他各种各样的应用程序。原创 2024-11-09 16:55:46 · 343 阅读 · 0 评论 -
JavaCC 实战一:安装与入门示例
Java Compiler Compiler (JavaCC) 是 Java 应用程序最流行的一种解析器生成器。解析器生成器是一种可以读取语法规范并将其转换为能够识别与匹配语法规范的一段 Java 程序。除了解析器生成器本身,JavaCC 还提供了与解析器生成相关的其他功能,例如树构建(通过 JavaCC 附带的 JJTree 工具)、操作和调试。一旦生成 JavaCC 解析器,运行它只需要 Java 运行时环境(JRE)。原创 2024-11-09 10:23:17 · 800 阅读 · 0 评论 -
Druid SQL Parser 入门:实现 SQL 数据治理检查器
在数据仓库中我们维护了大量的开发任务,但是随着业务的发展、数据处理逻辑的更迭,以及人员变动等原因,这些开发任务越来越复杂以及越来越难维护。由于不同时期、不同开发同学的开发规范不同会给任务带来一定的风险隐患。这时候就需要通过数据治理来规避其中的风险。可以是事后治理,即通过离线任务筛选出不符合规范的任务,也可以是事前治理,即在任务上线前进行检查操作。无论是事前还是事后都需要一种检查器帮助用户发现问题。针对数据研发,我们提供了不同的数据治理检查器,下面提供几个示例。原创 2024-11-02 20:05:52 · 717 阅读 · 0 评论 -
2024年10月数据月报
2024年10月数据月报,为您准备了阿里、字节、百度等大厂160多篇实践案例原创 2024-11-02 15:18:27 · 1502 阅读 · 0 评论 -
Druid SQL Parser 入门:解析 MySQL 表名
本文主要介绍如何使用 Druid SQL Parser 来解析 MySQL 的 Select 查询(无论是简单查询还是复杂的子查询、JOIN 查询等)中的表名。原创 2024-10-24 23:33:25 · 724 阅读 · 0 评论 -
Druid SQL Parser 入门:简单解析 MySQL Create 语句
今天来介绍一下如何使用 Druid SQL Parser 来解析 MySQL Create 语句。原创 2024-10-22 23:13:12 · 296 阅读 · 0 评论 -
深入理解 Druid SQL Parser 抽象语法树 AST
AST 是 abstract syntax tree 的缩写,也就是抽象语法树。和所有的 Parser 一样,Druid Parser 也会生成一个抽象语法树。原创 2024-10-21 22:14:56 · 739 阅读 · 0 评论 -
2024年09月数据月报
2024年09月数据月报,为您准备了阿里、字节、百度等大厂120多篇实践案例原创 2024-10-13 08:35:46 · 619 阅读 · 0 评论 -
2024年08月数据月报
2024年09月数据月报,为您准备了阿里、字节、百度等大厂150多篇实践案例原创 2024-09-08 20:44:44 · 2873 阅读 · 0 评论 -
Spark 应用程序部署工具spark-submit
1. 简介Spark的bin目录中的spark-submit脚本用于启动集群上的应用程序。 可以通过统一的接口使用Spark所有支持的集群管理器,因此不必为每个集群管理器专门配置你的应用程序(It can use all of Spark’s supported cluster managers through a uniform interface so you don’t have to co......原创 2017-02-16 20:08:53 · 6654 阅读 · 0 评论 -
2024年07月数据月报
2024年07月数据月报,为您准备了阿里、字节、百度等大厂120多篇实践案例原创 2024-08-03 20:41:28 · 1461 阅读 · 0 评论 -
用户画像实战:分布式全局字典设计与实现
当业务标签越来越多时,将不再适合,因为当列越多时,更新效率将会越慢。一种优化方案是通过对标签表构建索引,将用户ID编码后以 Bitmap 格式保存(一般使用进行压缩存储),将关系运算转化 Bitmap 的交并差运算,进而加速实时计算性能。如果用户 ID 是字符类型,需要先将用户ID进行整数编码才能使用 Bitmap 存储。原创 2024-07-20 16:22:03 · 734 阅读 · 0 评论 -
用户画像高分笔记
用户画像实战笔记与大厂案例原创 2024-07-20 16:56:36 · 670 阅读 · 0 评论 -
用户画像实战:基于 ROW_NUMBER 的全局字典设计与实现
当业务标签越来越多时,宽表标签计算的方案将不再适合,因为当列越多时,更新效率将会越慢。一种优化方案是通过对标签表构建索引,将用户ID编码后以 Bitmap 格式保存(一般使用 RoaringBitmap 进行压缩存储),将关系运算转化 Bitmap 的交并差运算,进而加速实时原创 2024-07-17 23:48:58 · 786 阅读 · 0 评论 -
2023年04月数据月报
2023年04月数据月报,为您准备了阿里、字节、百度等大厂80多篇实践案例原创 2024-07-06 09:49:32 · 1479 阅读 · 0 评论 -
2024年06月数据月报
2024年06月数据月报,为您准备了阿里、字节、百度等大厂130+篇实践案例原创 2024-07-06 09:43:06 · 901 阅读 · 0 评论 -
用户画像实战:使用宽表存储画像标签
如果在线画像分析服务按照这样的数据模型组织标签数据,不可避免的需要 Join 多张标签表来完成多标签的过滤,这对于数据库产品开销太大。我们可以将相对稳定的标签表离线聚合成宽表,将多张表的关联操作转化成对一张表的过滤计算,新的标签列的场景可以通过增加列的方式实现原创 2024-06-30 21:56:33 · 1161 阅读 · 0 评论 -
AirFlow 实战:安装与启动
1. 安装通过pip安装:xiaosi@yoona:~$ pip install airflow如果速度比较慢,可以使用下面提供的源进行安装:xiaosi@yoona:~$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple airflow如果出现下面提示,表示你的airflow安装成功了:Successfully installed原创 2017-08-02 18:23:30 · 12778 阅读 · 7 评论 -
论文系列-Lightweight Asynchronous Snapshots for Distributed Dataflows
分布式有状态流处理支持在云中部署和执行大规模连续计算,目标是实现低延迟和高吞吐量。这种模式的最大挑战就是在可能失败情况下如何提供处理保证。现有方法依赖于可用于故障恢复的周期性全局状态快照。这些方法有两个主要缺点。首先,他们经常拖延影响数据摄取的整体计算过程。其次,持久化存储所有传输中的记录以及算子状态,这会导致比所需的快照要更大。因此,提出了一种新的分布式快照的算法,即在 Apache Flink 中的异步屏障快照(Asynchronous Barrier Snapshotting (ABS))。原创 2022-09-27 23:47:43 · 275 阅读 · 0 评论 -
Hive 实战:位图 Bitmap 系列-位图计算函数
ClickHouse 提供了一系列用于位图索引和计算的函数,这些功能特别适用于处理大量的分布式聚合,可以高效地进行复杂的位运算。而在 Hive 中没有内置的等效函数,我们可以通过创建用户自定义函数来实现。在这我们基于 RoaringBitmap 实现了一系列的位图函数。原创 2024-06-15 13:32:50 · 1184 阅读 · 0 评论 -
Roaring Bitmap 更好的位图压缩算法
Bitsets(也称为Bitmaps)通常用作快速数据结构。不幸的是,他们可能会占用太多内存。为了降低内存的使用,我们经常会使用压缩的位图。Roaring Bitmaps 是一种压缩的位图,要优于常规的压缩位图,例如 WAH,EWAH 或者 Concise。在某些情况下,可以比它们快几百倍,并且通常提供更好的压缩。几乎所有流行的编程语言(Java,C,C ++,Go,C#,Rust,Python …)都提供了 Roaring Bitmaps。原创 2022-11-13 16:08:28 · 1445 阅读 · 0 评论 -
Hive 实战:位图 Bitmap 系列-group_bitmap UDAF 实现解析
在 ClickHouse 中,groupBitmap 函数用于从整数列聚合生成位图,常用于高效地进行复杂的位运算。而在 Hive 中没有内置的等效函数,我们可以通过创建一个用户自定义聚合函数(UDAF)来实现 groupBitmap。这里将详细介绍如何在 Hive 中实现一个类似 groupBitmap 的自定义函数,包括 UDAF 的定义、编译、注册以及使用步骤。原创 2024-06-10 12:44:33 · 1741 阅读 · 2 评论 -
使用 Range-Encoded Bit-Slice Indexes 解决 Bitmap 范围查询和高基维问题
这篇文章中描述的所有概念都是基于过去几十年里一些非常聪明的人所做的研究。我只是从更高层次上描述这些事情,在阅读下面内容之前建议您先阅读更多关于 Bit-sliced Indexes 和 Range-Encoding 的内容。翻译 2023-03-05 15:36:04 · 592 阅读 · 0 评论 -
Hive 实战:位图 Bitmap 系列-bitmap_and 函数实现解析
在 ClickHouse 中,bitmapAnd 函数用于计算两个位图 Bitmap 的交集,常用于高效地进行复杂的位运算。而在 Hive 中没有内置的等效函数,我们可以通过创建一个用户自定义函数(UDF)来实现 bitmapAnd。这里将详细介绍如何在 Hive 中实现一个类似 bitmapAnd 的 UDF,包括 UDF 的定义、编译、注册以及使用步骤。原创 2024-06-08 18:05:51 · 1339 阅读 · 0 评论