自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lansonli(蓝深李)的博客

影响未来社会二十年发展,核心技术趋势由ABCD四个字母组成,分别是AI(人工智能)BlockChain(区块链)、Cloud(云)、和Data(大数据),每一夜都有全新的认知和感触

  • 博客(897)
  • 资源 (79)
  • 收藏
  • 关注

原创 大数据趣味学习探讨(二):我是怎么坚持学习的

2.1、调研日前,北京大数据研究院联合大数据分析与应用技术国家工程实验室、北京治数科技有限公司共同发布了《2022年中国大数据产业发展指数报告》。研究团队在2020年、2021年连续发布大数据产业发展指数的基础上,深入调研了各地大数据政策环境、大数据产业和企业发展状况,基于自身企业库中收录的 7472 家大数据企业数据和相关合作方数据,对全国 31 个省级行政区(不包含港澳台地区)和 150个 重点城市的大数据产业发展情况进行综合评估。

2022-09-29 07:30:00 659 100

原创 大数据入门学习指南

大数据入门核心技术栏目是为初学者精心打造入门大数据必学知识整理,内容十分丰富,集合将近200篇高质文章带你轻松学习。但是由于文章很多,集合很多不同系列的知识点,在栏目里面难以标注顺序,这次博主花时间整理一份详细的学习指南,对于刚学习大数据的初学者是非常友好的。只要跟着学,想进入大数据做开发是很容易的,前提你得自律加坚持。为什么选择学习入门大数据开发,不选择JavaWeb开发?借棋弈做比喻,智商高的不要选择五子琪,要选择围棋,它能长久地吸引你。......

2022-05-21 15:57:40 4621 106

原创 Spring基础(十四):Spring的事务回顾

事务(Transaction)指的是一个操作序列,该操作序列中的多个操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。目前常用的存储引擎有InnoDB(MySQL5.5以后默认的存储引擎)和MyISAM(MySQL5.5之前默认的存储引擎),其中InnoDB支持事务处理机制,而MyISAM不支持。二、

2022-09-29 22:18:56 29

原创 大数据必学Java基础(六十六):BlockingQueue常见子类

不可以放入null元素的,不允许放入不可比较的对象(导致抛出ClassCastException),对象必须实现内部比较器或者外部比较器。上面的while不可以换为if,因为如果notFull中的线程被激活的瞬间,有其他线程放入元素,那么队列就又满了。无界的队列,没有长度限制,但是在你不指定长度的时候,默认初始长度为11,也可以手动指定,队列是空的,可以理解为队列满了,满的话放入元素 put 一定会阻塞。优先级队列,意味着队列有先后顺序的,数据有不同的权重。意思就是队列的长度可以指定,也可以不指定。

2022-09-28 22:02:10 446 10

原创 客快物流大数据项目(七十八):Hue简介

HUE是一个开源的。

2022-09-27 22:44:45 667 8

原创 大数据必学Java基础(六十五):阻塞队列介绍

BlockingQueue介绍BlockingQueue继承Queue,Queue继承自Collection所以Collection最基础的增删改查操作是有的,在这个基础上,多了Queue的特点,在这个基础上又多了阻塞的特点,最终形成了BlockingQueue。

2022-09-27 04:30:00 87 12

原创 湖仓一体电商项目(二十三):离线业务 统计每天用户商品浏览所获积分

使用Iceberg构建湖仓一体架构进行数据仓库分层,通过Flink操作各层数据同步到Iceberg中做到的离线与实时数据一致,当项目中有一些离线临时性的需求时,我们可以基于Iceberg各层编写SQL进行数据查询,针对Iceberg DWS层中的数据我们可以编写SQL进行离线数据指标分析。当前离线业务根据Iceberg-DWS层中商品浏览宽表数据“DWS_BROWSE_INFO”进行查询每天每个用户商品浏览所获积分信息。

2022-09-26 19:18:18 620 36

原创 大数据必学Java基础(六十四):数据结构队列介绍

思想上的结构--》卧室,厨房,卫生间 ---》线性表(数组,链表),图,树,栈,队列。

2022-09-26 09:26:43 438 3

原创 湖仓一体电商项目(二十二):实时任务执行流程

依次启动如下Flink代码:”ProduceKafkaDBDataToODS.scala”、“ProduceKafkaLogDataToODS.scala”、“DimDataToHBase.scala”、“ProduceKafkaODSDataToDWD.scala”、“ProduceBrowseLogToDWS.scala”、“ProcessBrowseLogInfoToDM.scala”代码。启动项目“LakeHouseDataPublish”发布数据。

2022-09-25 14:00:00 269 2

原创 大数据必学Java基础(六十三):COW并发容器讲解

由上面的源码看出,每次调用CopyOnWriteArraySet的add方法时候,其实底层是基于CopyOnWriteArrayList的addIfAbsent,每次在addIfAbsent方法中每次都要对数组进行遍历,所以CopyOnWriteArraySet的性能低于CopyOnWriteArrayList。

2022-09-25 04:30:00 354 4

原创 湖仓一体电商项目(二十一):数据发布接口和数据可视化

通过Flink实时把结果数据写入Clickhouse-DM层中后,我们需要编写数据发布接口方便数据使用方调用数据结果进行可视化,数据发布接口项目为SpringBoot项目“LakeHouseDataPublish”,此Springboot接口支持mysql数据源与clickhouse数据源,mysql数据源方便离线数据展示,clickhouse数据源主要展示DM层实时结果数据。启动项目“LakeHouseDataPublish”数据发布接口,启动之后浏览器输入以上接口即可查询对应数据结果。

2022-09-24 21:09:57 319 5

原创 大数据必学Java基础(六十二):ConcurrentMap并发容器对比

ConcurrentHashMap:性能高,线程安全Hashtable: 线程安全,性能低HashMap:线程不安全,性能高线程安全的HashMap:线程安全,性能低📢本文由 Lansonli 原创,首发于 CSDN博客🙉📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨。

2022-09-24 14:52:30 441

原创 湖仓一体电商项目(二十):业务实现之编写写入DM层业务代码

DM层主要是报表数据,针对实时业务将DM层设置在Clickhouse中,在此业务中DM层主要存储的是通过Flink读取Kafka “KAFKA-DWS-BROWSE-LOG-WIDE-TOPIC” topic中的数据进行设置窗口分析,每隔10s设置滚动窗口统计该窗口内访问商品及商品一级、二级分类分析结果,实时写入到Clickhouse中。代码中Kafka Connector中属性“scan.startup.mode”设置为“earliest-offset”,从头开始消费数据。

2022-09-23 22:40:06 371 7

原创 大数据趣味学习探讨(一):学习框架的重要性

因为读书并不能改变命运,它只能改变你的信息量,读是一个输入的操作,以前是个小学字典,读多了变成了新华字典,但只要你没有进一步的处理,它就永远是字典,毫无价值,真正的知识是有机的体系,而不是杂乱的堆积,想把信息转化知识,就一定要把无机变成有机,而关键点就是减熵,所谓的熵就是混乱度,一个报废的停车场,哪怕你有再多的轮胎,再多的方向盘,再多的仪表大灯离合器也毫无价值。我的框架是针对性的解决上面的问题,也就是说别人讲的是规则,而我跟你讲元规则,别人讲的是操作方法,而我告诉你的是方法中的方法,别人是教你怎么学习吧?

2022-09-23 20:17:08 1507 213

原创 大数据ClickHouse进阶(十四):ClickHouse的HAVING和ORDER BY子句

Order by 子句通过声明排序键来指定查询数据返回时的顺序。在MergeTree表引擎中指定order by 后,数据在各个分区内按照其定义的规则排序,这是一种分区内的局部排序,如果在查询时数据跨越了多个分区,则他们返回的顺序是无法预知的,每一次查询返回的顺序都有可能不同。这种情况下,如果希望数据总是能够按照期望的顺序返回,就需要借助Order by 子句来指定全局排序。ClickHouse也支持Having子句,需要与group by 同时出现,不能单独使用,它能够在聚合计算之后实现二次过滤数据。

2022-09-22 19:27:49 273 5

原创 湖仓一体电商项目(十九):业务实现之编写写入DWS层业务代码

DWS层主要是存放大宽表数据,此业务中主要是针对Kafka topic “KAFKA-DWD-BROWSE-LOG-TOPIC”中用户浏览商品日志数据关联HBase中“ODS_PRODUCT_CATEGORY”商品分类表与“ODS_PRODUCT_INFO”商品表维度数据获取浏览商品主题大宽表。以上代码执行后在,在对应的Kafka “KAFKA-DWS-BROWSE-LOG-WIDE-TOPIC” topic中都有对应的数据。在Iceberg-DWS层中对应的表中也有数据。

2022-09-22 08:31:41 378 61

原创 湖仓一体电商项目(十八):业务实现之编写写入DWD层业务代码

另外,在Flink处理此topic中每条数据时都有获取对应写入后续Kafka topic信息,本业务对应的每条用户日志数据写入的kafka topic为“KAFKA-DWD-BROWSE-LOG-TOPIC”,所以代码可以复用。以上代码执行后在,在对应的Kafka “KAFKA-DWD-BROWSE-LOG-TOPIC” topic中都有对应的数据。代码中Kafka Connector中属性“scan.startup.mode”设置为“earliest-offset”,从头开始消费数据。

2022-09-21 21:30:16 338 1

原创 大数据ClickHouse进阶(十三):ClickHouse的GROUP BY 子句

Group By子句又称聚合查询,与MySQL或者Hive中的使用方式一样,但是需要注意一点在Select查询中如果有聚合查询,例如max,min等,与聚合查询出现的字段一定要出现在Group by中,否则语句报错。ClickHouse中的Group by 还可以配合WITH ROLLUP、WITH CUBE、WITH TOTALS三种修饰符获取额外的汇总信息。CUBE 是立方体意思,WITH CUBE会基于聚合键之间所有的组合生成小计信息。

2022-09-21 07:46:27 173 34

原创 湖仓一体电商项目(十七):业务实现之编写写入DIM层业务代码

DIM层业务代码与第一个业务处理Kafka topic “KAFKA-DIM-TOPIC” 数据到HBase代码完全一直,所以这里直接复用第一个业务中的DIM层业务代码“DimDataToHBase.scala”即可。

2022-09-20 11:30:29 122 10

原创 大数据ClickHouse进阶(十二):ClickHouse的explain查询执行计划

ClickHouse在版本20.6.3之后支持explain查看执行计划。

2022-09-20 06:42:19 342 68

原创 大数据ClickHouse进阶(十一):ClickHouse的Join子句

在使用JOIN查询时,为了优化JOIN查询性能,应该遵循左大右小的原则,即将数据量小的表放在右侧。上图可知,连接精度分为ALL、ANY、ASOF三种,而连接类型分为外连接、内连接、交叉连接三种。CROSS JOIN 表示交叉连接,返回左表与右表两个数据集合的笛卡尔积,不需要指定JOIN key 连接键。另外,join也没有缓存机制,每一次join查询就算是执行相同的sql查询,也会生成一次全新的查询计划。如果左表内的一行数据在右表中有多行数据与之连接匹配,则仅返回右表中的第一行连接的数据。

2022-09-19 21:22:39 531 6

原创 湖仓一体电商项目(十六):业务实现之编写写入ODS层业务代码

这里也可以不设置从头开始消费Kafka数据,而是直接启动实时向MySQL表中写入数据代码“RTMockDBData.java”代码,实时向MySQL对应的表中写入数据,这里需要启动maxwell监控数据,代码才能实时监控到写入MySQL的业务数据。以上代码执行后在,在对应的Kafka “KAFKA-DIM-TOPIC”和“KAFKA-ODS-TOPIC”中都有对应的数据。针对用户日志数据可以启动代码“RTMockUserLogData.java”,实时向日志采集接口写入数据。

2022-09-19 08:28:30 540 49

原创 大数据ClickHouse进阶(十):ClickHouse的Array Join子句

Array join 子句允许在数据表的内部,与数组类型的字段进行join操作,从而将一行数组展开为多行。我们可以使用array join针对以上表数组字段一条膨胀成多条数据,类似Hive中的explode函数,在ClickHouse中没有explode函数,可以使用array join 达到同样效果。

2022-09-18 21:25:13 384 4

原创 大数据ClickHouse进阶(九):ClickHouse的From和Sample子句

SAMPLE factor OFFSET n 表示按因子系数和偏移量采样,其中factor表示采样因子,即采样总数据的百分比,n表示偏移多少数据后才开始采样,它们两个取值都是0~1之间的小数。Sample rows表示按照样本数量采样,其中rows表示大概采样多少行数据,是个近似值,取值必须大于1,如果rows行数大于表总数,效果等同于rows=1,即不采样。Sample factor表示按因子系数采样,factor表示采样因子,取值0-1之间的小数,表示采样总体数据的比例。

2022-09-18 07:09:05 291 30

原创 大数据ClickHouse进阶(八):ClickHouse的with子句

可以通过with定义变量,这些变量在后续的查询子句中可以直接访问。

2022-09-17 22:13:53 351 2

原创 大数据ClickHouse进阶(七):ClickHouse 数据查询

ClickHouse完全使用SQL作为查询语言,能够以Selete查询语句从数据库中查询数据,虽然ClickHouse拥有优秀的查询性能,但是我们也不能滥用查询,掌握ClickHouse支持的各种查询子句很有必要,使用不恰当的SQL语句进行查询不仅带来低性能,还可能带来系统不可预知的错误。此外需要注意,ClickHouse中对字段的解析大小写敏感,select a与select A表示的语义不同,下篇文章我们学习下ClickHouse中支持的查询语句,敬请期待。

2022-09-17 09:46:18 483 29

原创 Spring基础(十三):JDBCTemplate的批操作

一次连接,操作表格里的多条数据,就是批量操作。

2022-09-16 23:49:56 82 2

原创 湖仓一体电商项目(十五):实时统计商品及一级种类、二级种类访问排行业务需求和分层设计及流程图

另一类数据是来自于用户浏览商品日志数据,此类数据在1.5章节中已经通过日志采集接口将数据采集到Kafka topic “KAFKA-USER-LOG-DATA”中,针对此topic中数据我们需要通过Flink代码进行处理,Flink代码会将所有业务库中的数据保留一份完整数据到Iceberg ODS层中,针对维度数据会将数据进行过滤存储在Kafka 中,方便后续维度数据处理,另外为了使代码重启后消费数据位置信息得到保证,这里我们将所有事实数据也存储在Kafka中,后续各层也是按照此逻辑执行。

2022-09-16 08:54:48 366 54

原创 Spring基础(十二):JDBCTemplate的使用

JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。按如下项目结构准备 maven jar项目即可。

2022-09-15 23:37:48 96 4

原创 大数据ClickHouse进阶(六):Distributed引擎深入了解

Distributed引擎和Merge引擎类似,本身不存放数据,功能是在不同的server上把多张相同结构的物理表合并为一张逻辑表。注意:创建分布式表是读时检查的机制,也就是说对创建分布式表和本地表的顺序并没有强制要求。有了分布式表之后,我们就可以向分布式表中插入数据,那么分布式表会根据配置的sharding_key将数据写入到不同的节点分片中。

2022-09-15 11:07:26 970 135

原创 大数据必学Java基础(六十一):同步类容器对比应用

【代码】大数据必学Java基础(六十一):同步类容器对比应用。

2022-09-14 20:32:25 287 6

原创 大数据ClickHouse进阶(五):副本与分片

table_name”表示数据表的名称,通常与物理表的名字相同。以上我们创建的person_score表在ClickHouse集群节点node1、node2、node3上都是本地表,插入数据时插入到了对应节点的分片上,查询时也只能查询对应节点上的分片数据,如果我们想要通过一张表将各个ClickHouse节点上的person_score表进行查询,这时就需要使用Distribute表引擎,所以在实际工作中ClickHouse的数据分片需要结合Distriubute表引擎一同使用。

2022-09-14 09:07:28 613 32

原创 大数据必学Java基础(六十):集合补充

(ctrl + z:撤销,ctrl + y:恢复),用户的编辑操作被依次记录在一个栈中。一旦出现误操作,用户只需按下“撤销”按钮,即可取消最近一次操作并回到此前的编辑状态。这样,用户每访问一个新页面,其地址就会被存放至栈顶;而用户每按下一次“后退”按钮,即可沿相反的次序访问此前刚访问过的页面。真实结构 --》钢筋混凝土+牛顿力学 --》紧密结构(顺序结构),跳转结构(链式结构)思想上的结构 --》卧室,厨房,卫生间 --》线性表(数组,链表),图,树,栈,队列。放入的那个区域的数据结构就是按照栈来做的。

2022-09-13 21:13:21 458 1

原创 大数据ClickHouse进阶(四):ClickHouse的索引深入了解

由于是稀疏索引,MergeTree需要间隔index_granularity行数据生成一条索引,同时对应一个索引编号,每个MarRange与一个索引编号对应,通过与start及end对应的索引编号的取值,可以得到对应的数值区间;除了一级索引之外,MergeTree同样支持二级索引,二级索引又称为跳数索引,由数据的聚合信息构建而成,根据索引类型的不同,其聚合信息的内容也不同,跳数索引的目的与一级索引一样,也是帮助查询时减少数据扫描的范围。而在稀疏索引中每一行索引标记对应的是一段数据,而不是一行。

2022-09-13 09:21:43 745 30

原创 大数据ClickHouse进阶(三):TTL深入了解

当时间到达时,如果是列字段级别的TTL,则会删除这列的数据;如果是表级别的TTL,则会删除整张表的数据;在ClickHouse中我们还可以对整张表设置TTL,需要在建表时在表参数中指定TTL表达式,当TTL触发时,满足过期时间的数据行将被整行删除。INTERVAL 完整的操作包括:SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR。上述语句表示数据的存活时间是time_col时间的1个月之后。上述语句表示数据的存活时间是time_col时间的3天之后。

2022-09-12 23:34:55 237 1

原创 湖仓一体电商项目(十四):实时任务执行流程

依次启动如下Flink代码:”ProduceKafkaDBDataToODS.scala”、“DimDataToHBase.scala”、“ProduceKafkaODSDataToDWD.scala”、“ProduceUserLogInToDWS.scala”、“ProcessUserLoginInfoToDM.scala”代码。各个代码中Kafka Connector属性“scan.startup.mode”设置为“latest-offset”,从最新位置消费数据。

2022-09-12 08:41:40 418 58

原创 Spring基础(十一):AOP注解和XML方式实现

AspectJ本身并不是spring框架中的组成部分, 是一个独立的AOP框架,一般把AspectJ和Spring框架的AOP依赖一起使用,所以要导入一个独立的依赖。execution([权限修饰符][返回值类型][类的全路径名][方法名](参数 列表) )通过一个表达式来确定AOP要增强的是哪个或者那些方法。开启注解扫描和AOP切面编程自动生成代理对象配置。数字越小,其代理位置越靠近注入位置。2、基于XML配置方式 (了解)1、基于注解方式实现 (熟练)数字越小,优先级越高。

2022-09-11 23:09:53 138 23

原创 湖仓一体电商项目(十三):数据发布接口和可视化

通过Flink实时把结果数据写入Clickhouse-DM层中后,我们需要编写数据发布接口方便数据使用方调用数据结果进行可视化,数据发布接口项目为SpringBoot项目“LakeHouseDataPublish”,此Springboot接口支持mysql数据源与clickhouse数据源,mysql数据源方便离线数据展示,clickhouse数据源主要展示DM层实时结果数据。

2022-09-11 09:01:56 193 9

原创 Spring基础(十):AOP概念和原理

表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。AOP切面编程一般可以帮助我们在不修改现有代码的情况下,对程序的功能进行拓展,往往用于实现日志处理,权限控制,性能检测,事务控制等。Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。AOP实现的原理就是动态代理,在有接口的情况下,使用JDK动态代理,在没有接口的情况下使用cglib动态代理。

2022-09-10 18:49:43 251 2

原创 湖仓一体电商项目(十二):编写写入DM层业务代码

DM层主要是报表数据,针对实时业务将DM层设置在Clickhouse中,在此业务中DM层主要存储的是通过Flink读取Kafka “KAFKA-DWS-BROWSE-LOG-WIDE-TOPIC” topic中的数据进行设置窗口分析,每隔10s设置滚动窗口统计该窗口内访问商品及商品一级、二级分类分析结果,实时写入到Clickhouse中。代码中Kafka Connector中属性“scan.startup.mode”设置为“earliest-offset”,从头开始消费数据。

2022-09-10 11:34:06 841 42

Docker核心技术之镜像

Docker核心技术之镜像

2022-09-22

Dockerfile的详解

Dockerfile的详解

2022-09-22

linux CentOS7 下 Docker安装

linux CentOS7 下 Docker安装

2022-09-20

php配置mongodb扩展、安装mongodb服务教程

php配置mongodb扩展、安装mongodb服务教程

2022-09-20

Robo3T使用小结文档

Robo3T使用小结

2022-08-26

MongoDB之conf配置文件详解

MongoDB之conf配置文件详解

2022-08-26

Mongodb基本操作

Mongodb基本操作

2022-08-25

CentOS7.4 安装mongodb

CentOS7.4 安装mongodb

2022-08-25

Kazoo安装和使用文档

Kazoo安装和使用文档

2022-08-24

Centos7下安装MongoDB

Centos7下安装MongoDB

2022-08-24

ZooKeeper简介和概念知识

ZooKeeper简介和概念知识

2022-08-23

ZooKeeper安装

ZooKeeper安装

2022-08-23

Laravel中Redis的配置和使用

Laravel中Redis的配置和使用

2022-08-22

Laravel/Lumen 使用 Redis队列

Laravel/Lumen 使用 Redis队列

2022-08-22

Redis安装与卸载文档

Redis安装与卸载文档

2022-08-21

php7安装redis6扩展

php7安装redis6扩展

2022-08-21

Laravel Redis操作大全

Laravel Redis操作大全

2022-08-20

【laravel7.x中文文档】Redis

【laravel7.x中文文档】Redis

2022-08-20

Redis使用认证密码登录

Redis使用认证密码登录

2022-08-19

docker 实现redis集群搭建

docker 实现redis集群搭建

2022-08-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除