- 博客(38)
- 收藏
- 关注
原创 count及leftjoin中的谓语下推
-- 时间相关标准时间格式字符:yyyy 表示年 必须小写MM 表示月 必须大写,小写表示月份dd 表示天 必须小写HH/hh 表示小时 大小写均可mm 表示分钟,必须小写,大写表示月份ss 表示秒 必须小写 大写表示毫秒SS 表示毫秒 必须大写 小写表示秒一、count相关1、count(1) and count(*)当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!从执行计划来看,count(1)和count()的效果是一样的。但是在表做
2022-02-14 17:03:17
774
原创 flink-connect-kafka
1、参数设置以下参数都必须/建议设置上1.订阅的主题2.反序列化规则3.消费者属性-集群地址4.消费者属性-消费者组id(如果不设置,会有默认的,但是默认的不方便管理)5.消费者属性-offset重置规则,如earliest/latest…6.动态分区检测(当kafka的分区数变化/增加时,Flink能够检测到!)7.Checkpoint会把offset随着做Checkpoint的时候提交到Checkpoint和默认主题中————————————————2、参数说明3、kafka
2022-02-14 16:44:14
1360
原创 flink提交命令相关解释
一、Flink on Yarn1.1 、per-job模式1.1.1、命令bin/flink run -m yarn-cluster -yn 3 -ys 3 -ynm bjsxt02 -c com.test.flink.wc.StreamWordCount ./appjars/test-1.0-SNAPSHOT.jar1.1.2、参数解释 -yn,--container <arg> 表示分配容器的数量,也就是 TaskManager 的数量。 -d,--detached:设置在
2022-02-14 16:40:38
4406
原创 flink1.14.3集成hive-hbase
1、下载flink1.142、配置配置系统环境变量/etc/profile和flink的配置文件flink-conf.yaml/etc/profile 增加配置如下(这里默认jdk,haodoop都配置好):#flink configexport FLINK_HOME=/opt/module/flink-1.14.3export HADOOP_CLASSPATH=`hadoop classpath`export PATH=$PATH:$FLINK_HOME/binflink-conf.ya
2022-02-14 16:36:45
1871
原创 flink1.14的混合源
1、DataStream 和 Table/SQL 混合应用的批执行模式在 Flink 1.14 中,有界的批执行模式的 SQL/Table 应用可将其中间数据表转换成数据流,经过由 DataStream API 定义的算子处理,再转换回数据表。其内部原理是,Flink 构建了一个由优化的声明式 SQL执行和 DataStream 批执行混合而成的数据流 DAG//创建流执行环境 和 表执行环境 StreamExecutionEnvironment env = StreamExecutionEnvir
2021-11-09 16:49:40
3102
原创 flink的window,时间语义,watermark,状态编程,容错机制checkpoint
文章目录六、高阶编程开窗一般在分组之后6.1 Window6.1.1 窗口概述及类型6.1.2 窗口使用API6.1.2.1 ReduceFunctioin6.1.2.2 AggregateFuncation --> 灵活6.1.2.3 全窗口函数(full window functions)6.1.2.4 其它可选API6.2 时间语义与Watermark6.2.0 与spark的比较6.2.1 时间语义①Event Time (事件时间)②Ingest
2020-12-19 16:33:41
2457
3
原创 Flink(1.11)高阶编程三——容错机制
文章目录容错机制6.4.4 状态一致性6.4.4.1一致性级别6.4.4.2端到端的状态一致性6.4.4.2.1 幂等写入6.4.4.2.2 事务写入①预写日志(WAL)②两阶段提交(2PC)6.4.5 检查点 —— checkpoint①flink检查点算法——Chandy-Lamport 算法的分布式快照②barrier对齐③barrier不对齐④Flink+Kafka 如何实现端到端的Exactly-Once语义**随笔**6.4.6 保存点容错机制6.4.4 状态一致
2020-12-18 00:12:18
604
1
原创 Flink(1.11)高阶编程四——FlinkSQL
文章目录八、Flink SQL 编程8.1 Table API①创建表的执行环境②将流转成动态表 ——> fromDataStream③使用TableAPI对动态表进行操作,返回一个结果表④ 1 将动态表转换成流,输出 ——> toAppendStream \ toRetractStream④ 2 将动态流写入文件系统 ——> executeInsert1)、把文件系统抽象成Table:Connect2)、通过往表插入数据的方法,把结果Sink到文件系统 ——> exe
2020-12-16 01:06:10
2097
1
原创 spark内核(下)——job任务提交源码解析
Driver ---->main ----> SparkContext ---> RDD ---> RDD ---->RDD ---RDD.collect()第一部分: SparkContext的构造SparkContext (Driver构造) 核心属性: var _env: SparkEnv : 封装了Spark所有的环境信息(cache,序列化器,BM) _env = createSparkEnv(_conf, isLocal, listene
2020-12-16 01:04:00
237
2
原创 Flink(1.11)高阶编程二——状态编程
文章目录6.4 状态编程和容错机制6.4.1 概述6.4.2 有状态的算子6.4.2.1 算子状态(1)**原理 ** (2)三种基本数据结构①列表状态( List state)②联合列表状态(Union list state)③广播状态(Broadcast state)**广播状态代码**:6.4.2.2 键控状态(1)**原理 ** (2)支持的类型代码实现 :①值的类型②列表类型③K-V类型④ReducingState⑤AggregatingState**注意的点**
2020-12-03 16:52:23
636
原创 Flink(1.11)高阶编程一——窗口、时间语义、watermark以及定时器
文章目录六、高阶编程开窗一般在分组之后6.1 Window6.1.1 窗口概述及类型6.1.2 窗口使用API6.1.2.1 ReduceFunctioin6.1.2.2 AggregateFuncation6.1.2.3 全窗口函数(full window functions)6.1.2.4 其它可选API6.2 时间语义与Watermark6.2.0 与spark的比较6.2.1 时间语义①Event Time (事件时间)②Ingestion Time(数据
2020-12-02 19:46:01
2200
原创 Flink(1.11) 核心编程——案例数据有所省略
文章目录五、核心编程5.1 Environment5.2 Source —— 从哪获取(消费)数据5.2.1 读取文件数据5.2.2 读取kafka数据5.2.3 自定义数据源5.3 Transform —— 处理数据5.3.1 Map5.3.2 MapRichFunction5.3.3 FlatMap5.3.4 Filter5.3.5 Keyby5.3.6 shuffle5.3.7 Split —— new OutputSelect合流5.3
2020-12-01 00:35:51
826
原创 Flink(1.11)概述——含架构图
文章目录一、Flink概述**1.1** **Flink and Spark****1.2** **Flink or Spark**二、wordCount案例2.1 批处理2.2 有界流2.3 无界流2.4 打成jar包上传到flink运行三、运行环境3.1 standalone模式3.1.1 前端界面3.1.2 命令行方式提交3.1.3 standalone模式HA配置:启动:3.2 Yarn模式3.2.1 配环境,集成hadoop3.2.2 直接运行3.2.3
2020-11-29 23:42:36
1925
原创 SparkStreaming实时数仓总结
一、SparkStreaming实时数仓用到的存储介质都干啥事了二、SparkStreaming实时数仓要点--实时数仓中存储介质都干了些啥?1. redis 64G①存mid到set集合,重复的mid返回0则被过滤达到去重的目的(保留第一次启动数据)②窗口法双流join的去重③缓存法双流join缓存流数据④手动保存偏移量(除了消费dws_order_wide主题)2. hbase①从ods层消费维度表(主题)写到hbase(维度表的dwd层,初始化维度表只做一次)②us
2020-11-26 17:05:29
700
原创 正则概述
文章目录一、正则语法二、一些应用2.1 验证手机号:2.2 验证邮箱:2.3 去叠词:2.4 split一、正则语法--语法:[abc] 或a或者b或c[a-z] 小写字母[a-zA-Z0-9_] 数字字母下划线[^a] 非a[^abc] 非a 非b 非c--注意:^表示非 , 只有在[] 内的时候,才表示非,否则表示开头\w 表示单词字符串 等价于 [a-zA-Z0-9_]\W 表示非单词字符 等价于 [^a-zA-Z0-9]\d 表示数字digit
2020-11-26 16:55:54
126
原创 SparkStreaming实时数仓——ads层 [精准一次性消费之手动维护+事务]
文章目录一、将dws数据存入kafka二、ads层数据2.1 需求2.2 思路2.3 数据的精准一次性消费分析三、消费dws层数据:dws_order_wide3.1 修改BaseAppV43.2 定义一个jdbc的工具类3.3 在OffsetManager中定义一个方法,从mysql读取偏移量3.4 AdsOrderWideApp一、将dws数据存入kafka /** * 把数据写入kafka,dws层 */ rdd.foreachParti
2020-11-24 23:53:36
828
2
原创 clickhouse简述
文章目录一、ClickHourse简介二、特点三、操作**四、表引擎 (engine)五、sql操作5.1 增5.1.1 插入数据5.1.2 with rollup:从右至左去掉维度进行小计5.1.3 with cube:各种维度组合进行聚合5.1.4 with taotals:仅仅多了一个总计5.2 删5.3 查5.4 改六、高可用6.1 复本写入流程6.2 配置规划6.3 在hadoop103安装clickhouse6.4 创建配置文件:metrika.xml6.4
2020-11-24 23:51:03
2948
原创 SparkStreaming实时数仓——金额分摊
文章目录一、实现思路二、实现代码三、将数据写入clickhouser一、实现思路1.按比例求分摊: 分摊金额/实际付款金额 = 个数*单价/该单原始总金额2.所以: 分摊金额 = 个数*单价*实际付款金额/该单原始总金额3.由于有除法的存在, 结果我们需要做四舍五入, 会导致精度的丢失4.一个订单对应多个详情, 每个详情均做四舍五入, 他们的和可能与该订单的实际支付总金额不等 订单 详情 1 详情 2 详情 3 原始: 12
2020-11-23 21:31:24
679
原创 SparkStreaming实时数仓——双流topic的实现思路
文章目录1.双流join的实现思路1.1 使用滑动window完成join1.2 使用缓存实现2.升级BaseApp——多个topic多个流3.代码实现3.1 将dwd层中order_info和order_detail的两个流的数据进行双流join方法一、使用滑动窗口方法二、使用缓存1.双流join的实现思路1.1 使用滑动window完成join 由于各种原因,两张表同时产生的时候,不能同批次得到,但是实际不会差太多批次,在join的时候,可以使用滑动窗口来覆盖多个批次,从而可以
2020-11-20 21:27:05
1168
原创 SparkStreaming实时数仓——首单分析[代码截图]
为了便于查看将代码截图成了两张图片推荐一款可以截长图的软件,真的香——FastStone Capture可官网直接下载一、封装的一些样例类,工具类二、具体实现
2020-11-19 16:13:03
370
3
原创 SparkStreaming实时数仓——首单分析(下)
文章目录一、准备其它实时维度表1.1 在pheonix中创建其它需要的维度表gmall_spu_infogmall_base_trademarkgmall_base_category3gmall_sku_info1.2 将这四个维度表的数据初始化到maxwell1.3 执行BaseDBMaxwellApp类1.4 将数据写入到phoenix将新增的四个主题的数据通过执SaveToPhoenix写入到phoenix二、创建订单详情表写入到dwd层2.1 创建新增的四个表的样例类2.2
2020-11-19 10:32:34
382
原创 SparkStreaming实时数仓——首单分析(中)[ 精准一次性消费之手动维护+幂等性,一个流多个topic情况 ]
文章目录五、DWD层处理5.1 判断首单业务的策略分析5.2 首单分析的前期准备先写事实表5.2.1 添加样例类OrderInfo5.2.2 创建DwdOrderInfoApp类(没有维度表信息)问题:事实表的数据,如何补齐维度数据?再写维度表前期准备5.2.3 维度表的构建思路5.2.4 升级版——(一个流消费多个Topic)5.2.4.1 MyKafkaUtil_1方法5.2.4.2 升级OffsetManager方法5.2.4.3 BaseAppV2方法具体实现方法5
2020-11-18 00:03:10
1883
原创 SparkStreaming实时数仓——首单分析(上)[ 精准一次性消费之手动维护+幂等性,一个流一个topic情况 ]
文章目录一、需求分析及实现思路1.1 需求分析:当日新增付费用户首单分析1.2 整体实时计算框架流程1.3 具体业务流程图二、实时采集mysql数据2.1 canal实时采集mysql数据2.1.1 什么是canal2.1.2 canal使用场景①原始场景:阿里otter中间件的一部分②常见场景1:更新缓存服务器③常见场景2④常见场景32.1.3 canal的工作原理mysql的主从复制原理canal工作原理2.1.4 mysql的binlog①什么是binlog②开启bin
2020-11-17 01:17:56
3275
3
原创 SparkStreaming实时数仓——日活
文章目录一、日活需求概述思路:二、搭建实时处理模块前期准备:2.1 创建module2.2 pom.xml文件中导入依赖、创建需要的package2.3 添加需要的配置文件2.3.1 log4j.properties2.4 添加需要的工具类2.4.1 添加消费kafka数据工具类2.4.2 添加获取redis客户端工具类2.5 添加需要用到的样例类主要代码实现:2.6 创建DauApp2.6.1 从kafka获取日志数据2.6.2 封装日志数据为样例类、同时解析j
2020-11-14 00:42:48
1231
原创 ElasticSearch(ES)——概述/API
文章目录一、ElasticSearch基础1.1 简介1.2 使用场景1.3 ES与其他数据存储进行比较1.4 ES的特点1.5 Lucene、Nutch、ElasticSearch关系二、基本概念ES概念和MySQL关系对比三、安装ES3.1 解压、改名3.2 修改配置文件3.3 教学环境启动优化分发3.4 修改hadoop163、hadoop164的节点名3.5 单台启动测试,解决问题四、安装kibana4.1 解压、改名4.2 修改配置文件4.3 启动测试五
2020-11-11 21:25:23
1245
1
原创 SparkStreaming实时数仓——数据采集
文章目录一、实时需求概述1.1 实时需求与离线需求的比较离线需求实时需求1.2 实时需求和离线需求的对比1.1.1 离线架构1.1.2 实时架构二、模拟日志数据2.1 模拟数据需要用到的文件列表2.1.1 修改application.properties2.1.2 修改logback.xml落盘工具使用logback, 类似于log4j2.2 生成模拟数据2.3 创建日志服务器2.3.1 在project中创建springboot子模块2.3.2 创建cont
2020-11-11 00:42:01
964
原创 Spark源码解析之——YARN Cluster模式
YARN Cluster模式执行脚本提交任务,实际是启动一个SparkSubmit的JVM进程;SparkSubmit类中的main方法反射调用YarnClusterApplication的main方法;YarnClusterApplication创建Yarn客户端,然后向Yarn发送执行指令:bin/java ApplicationMaster;Yarn框架收到指令后会在指定的NM中启动ApplicationMaster;ApplicationMaster启动Driver
2020-11-08 18:17:40
1365
1
原创 Spark内核(上)——附:两种Yarn模式源码解析
文章目录一、Spark内核概述1.1 Spark核心组件回顾1.1.1 Driver1.1.2 Executor1.2 Spark通用运行流程概述二、Spark通信架构概述3.1 Spark中通信框架的发展:Driver:Executor3.2 Spark通讯架构解析三、Spark部署模式3.1 YARN模式运行机制3.1.1 YARN Cluster模式3.1.2 YARN Cluster源码①SparkSubmit精细版:精简版:SparkSubmit总结:②Appl
2020-11-07 00:39:49
1777
2
原创 数据仓库——下篇
文章目录六、DWS层6.1 业务术语6.1.1 用户6.1.2 新增用户6.1.3 活跃用户6.1.4 周(月)活跃用户6.1.5 月活跃率6.1.6 沉默用户6.1.7 版本分布6.1.8 本周回流用户6.1.9 连续n周活跃用户6.1.10 忠诚用户6.1.11 连续活跃用户6.1.12 近期流失用户6.1.13 留存用户应用的6.1.14 用户新鲜度6.1.15 单次使用时长6.1.16 日使用时长6.1.17 启动次数计算标准6.2
2020-11-05 23:34:28
2603
原创 数据仓库——上篇
文章目录一、数仓分层1.1 数仓的分层1.1.1 ODS(原始数据层)层1.1.2 DWD(数据明细层)层1.1.3 DWS(数据服务层)1.1.4 DWT(数据主题层)1.1.5 ADS(数据应用层)1.1.6 总结二、数仓理论2.1 范式、2.2 函数依赖2.3 常见的三范式2.4 关系建模和维度建模2.5 维度表和事实表2.6 维度建模的模型2.7 事实表的分类2.8 数据仓库建模2.8.1 ODS层2.8.2 DWD层2.8.3
2020-11-05 23:33:13
3383
原创 SparkCore——下篇
接上章节文章目录接上章节六、核心编程------RDD 【编程模型之一】6.5 行动算子6.5.1 区别6.5.2 常见的行动算子七、 RDD依赖关系7.1 RDD血缘关系 【toDebugString】7.2 RDD依赖关系 【dependencies】八、RDD序列化8.1 序列化8.1.1 闭包8.1.2 测试18.1.3 测试28.1.4 测试38.1.5 测试48.2 kryo8.2.1 引入8.2.2 测试:九、共享变量 【编程模型】9.1、
2020-10-21 19:34:51
199
原创 SparkCore——中篇(转换算子)
文章目录接上章节六、核心编程------RDD 【编程模型之一】6.4 RDD的转换算子分类6.4.1 单个RDD可以调用的算子6.4.1.1 map6.4.1.2 mapPartitions6.4.1.3 mapPartitionsWithIndex6.4.1.4 flatMap扁平化6.4.1.5 glom6.4.1.6 groupby分组6.4.1.7 shuffle(很重要!)6.4.1.8 defaultPartitioner(this)(很重要,非常重要)一个分区器中有分区数,和
2020-10-21 18:18:15
1239
原创 Spark-Core ——上篇
文章目录一、Spark简介1.简介2.DAG3. MR3.1 什么是MR?3.2 Hadoop和Spark的区别二、常见Api1.SparkConf1.1作用1.2 创建1.3 常见方法2.SparkContext(帮忙提交driver)2.1 作用2.2 创建2.3 常见方法2.4 WordCount:2.4.1 Hadoop与Spark的写法区别2.4.2 代码2.4.3 SparkContext的解释作用2.5 编程模型及其获取三、安装Spark3.1 本地模式3.
2020-10-21 16:07:42
1011
原创 SparkSql笔记 / 详解
文章目录一、SparkSQL1.1 历史沿袭1.2 编程模型1.3 编程环境1.4 创建SparkSession二、常见API2.1 SparkSession2.1.1 介绍2.1.2 方法2.1.3 构造2.2 DataFrameReaderDataFrame是SparkSql的编程模型2.2.1 基本介绍2.2.2 sql语法2.2.3 总结2.3 DSL语法【编程】2.4 创建DataFrame2.4.1【一个序列也能转成DataFrome】
2020-10-20 09:19:24
2281
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人