
数据湖基础+湖仓一体电商项目
文章平均质量分 87
数据湖是一个集中式的存储库,允许你以任意规模存储多个来源、所有结构化和非结构化数据。在大数据中属于很火的技术,该栏目现在活动促销,特惠价49.9元,火热🔥订阅中,活动结束后涨回原价到99,早买不会亏,已购买的对于涨价不影响,关健你能学到真正有用的知识,这才是本栏目的价值所在
优惠券已抵扣
余额抵扣
还需支付
¥49.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Lansonli
优快云大数据领域博客专家,InfoQ写作社区2022年度影响力作者、华为云社区2022年度十佳博主、华为云享专家、阿里云专家博主、腾讯云开发者社区2022年度最佳作者、腾云先锋(TDP)核心成员、51CTO专家博主,全网二十万多粉丝,知名互联网公司大数据高级开发工程师
展开
-
数据湖及湖仓一体化项目学习框架
利用框架的力量,看懂游戏规则,才是入行的前提大多数人不懂,不会,不做,才是你的机会,你得行动,不能畏首畏尾选择才是拉差距关键,风向,比你流的汗水重要一万倍,逆风划船要累死人的上面这些看似没用,但又很重要,这里我就不在详述作用,有兴趣的同学可以看看我的学习框架的重要性我是怎么坚持学习的怎么确定学习目标这个栏目为初学者全面整理数据湖必学知识,内容是按照体系划分的,带你从基础知识到项目实战,想学会就得自律加坚持,赶快行动吧。1、数据湖技术Hudi。原创 2022-10-09 06:40:09 · 4409 阅读 · 61 评论 -
湖仓一体电商项目(二十四):合并Iceberg小文件
随着不断删除snapshot,在Iceberg表不再有manifest文件对应的parquet文件也会被删除。Iceberg表每次commit都会生成一个parquet数据文件,有可能一张Iceberg表对应的数据文件非常多,那么我们通过Java Api 方式对Iceberg表可以进行数据文件合并,数据文件合并之后,会生成新的Snapshot且原有Snap快照数据并不会被删除,如果要删除对应的数据文件需要通过“Expire Snapshots来实现”。每次表提交后是否删除旧的元数据文件。原创 2022-09-30 19:40:49 · 2094 阅读 · 6 评论 -
湖仓一体电商项目(二十三):离线业务 统计每天用户商品浏览所获积分
使用Iceberg构建湖仓一体架构进行数据仓库分层,通过Flink操作各层数据同步到Iceberg中做到的离线与实时数据一致,当项目中有一些离线临时性的需求时,我们可以基于Iceberg各层编写SQL进行数据查询,针对Iceberg DWS层中的数据我们可以编写SQL进行离线数据指标分析。当前离线业务根据Iceberg-DWS层中商品浏览宽表数据“DWS_BROWSE_INFO”进行查询每天每个用户商品浏览所获积分信息。原创 2022-09-26 19:18:18 · 1756 阅读 · 37 评论 -
湖仓一体电商项目(二十二):实时任务执行流程
依次启动如下Flink代码:”ProduceKafkaDBDataToODS.scala”、“ProduceKafkaLogDataToODS.scala”、“DimDataToHBase.scala”、“ProduceKafkaODSDataToDWD.scala”、“ProduceBrowseLogToDWS.scala”、“ProcessBrowseLogInfoToDM.scala”代码。启动项目“LakeHouseDataPublish”发布数据。原创 2022-09-25 14:00:00 · 957 阅读 · 2 评论 -
湖仓一体电商项目(二十一):数据发布接口和数据可视化
通过Flink实时把结果数据写入Clickhouse-DM层中后,我们需要编写数据发布接口方便数据使用方调用数据结果进行可视化,数据发布接口项目为SpringBoot项目“LakeHouseDataPublish”,此Springboot接口支持mysql数据源与clickhouse数据源,mysql数据源方便离线数据展示,clickhouse数据源主要展示DM层实时结果数据。启动项目“LakeHouseDataPublish”数据发布接口,启动之后浏览器输入以上接口即可查询对应数据结果。原创 2022-09-24 21:09:57 · 962 阅读 · 5 评论 -
湖仓一体电商项目(二十):业务实现之编写写入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 · 936 阅读 · 7 评论 -
湖仓一体电商项目(十九):业务实现之编写写入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 · 2344 阅读 · 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 · 960 阅读 · 1 评论 -
湖仓一体电商项目(十七):业务实现之编写写入DIM层业务代码
DIM层业务代码与第一个业务处理Kafka topic “KAFKA-DIM-TOPIC” 数据到HBase代码完全一直,所以这里直接复用第一个业务中的DIM层业务代码“DimDataToHBase.scala”即可。原创 2022-09-20 11:30:29 · 708 阅读 · 10 评论 -
湖仓一体电商项目(十六):业务实现之编写写入ODS层业务代码
这里也可以不设置从头开始消费Kafka数据,而是直接启动实时向MySQL表中写入数据代码“RTMockDBData.java”代码,实时向MySQL对应的表中写入数据,这里需要启动maxwell监控数据,代码才能实时监控到写入MySQL的业务数据。以上代码执行后在,在对应的Kafka “KAFKA-DIM-TOPIC”和“KAFKA-ODS-TOPIC”中都有对应的数据。针对用户日志数据可以启动代码“RTMockUserLogData.java”,实时向日志采集接口写入数据。原创 2022-09-19 08:28:30 · 1272 阅读 · 49 评论 -
湖仓一体电商项目(十五):实时统计商品及一级种类、二级种类访问排行业务需求和分层设计及流程图
另一类数据是来自于用户浏览商品日志数据,此类数据在1.5章节中已经通过日志采集接口将数据采集到Kafka topic “KAFKA-USER-LOG-DATA”中,针对此topic中数据我们需要通过Flink代码进行处理,Flink代码会将所有业务库中的数据保留一份完整数据到Iceberg ODS层中,针对维度数据会将数据进行过滤存储在Kafka 中,方便后续维度数据处理,另外为了使代码重启后消费数据位置信息得到保证,这里我们将所有事实数据也存储在Kafka中,后续各层也是按照此逻辑执行。原创 2022-09-16 08:54:48 · 1007 阅读 · 54 评论 -
湖仓一体电商项目(十四):实时任务执行流程
依次启动如下Flink代码:”ProduceKafkaDBDataToODS.scala”、“DimDataToHBase.scala”、“ProduceKafkaODSDataToDWD.scala”、“ProduceUserLogInToDWS.scala”、“ProcessUserLoginInfoToDM.scala”代码。各个代码中Kafka Connector属性“scan.startup.mode”设置为“latest-offset”,从最新位置消费数据。原创 2022-09-12 08:41:40 · 2211 阅读 · 58 评论 -
湖仓一体电商项目(十三):数据发布接口和可视化
通过Flink实时把结果数据写入Clickhouse-DM层中后,我们需要编写数据发布接口方便数据使用方调用数据结果进行可视化,数据发布接口项目为SpringBoot项目“LakeHouseDataPublish”,此Springboot接口支持mysql数据源与clickhouse数据源,mysql数据源方便离线数据展示,clickhouse数据源主要展示DM层实时结果数据。原创 2022-09-11 09:01:56 · 832 阅读 · 9 评论 -
湖仓一体电商项目(十二):编写写入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 · 1486 阅读 · 42 评论 -
湖仓一体电商项目(十一):编写写入DWS层业务代码
DWS层主要是存放大宽表数据,此业务中主要是针对Kafka topic “KAFKA-DWD-BROWSE-LOG-TOPIC”中用户浏览商品日志数据关联HBase中“ODS_PRODUCT_CATEGORY”商品分类表与“ODS_PRODUCT_INFO”商品表维度数据获取浏览商品主题大宽表。Flink在读取Kafka 用户浏览商品数据与HBase中维度数据进行关联时采用了Redis做缓存,这样可以加快处理数据的速度。原创 2022-09-09 21:46:28 · 936 阅读 · 1 评论 -
湖仓一体电商项目(十):业务实现之编写写入DWD层业务代码
编写处理Kafka ODS层数据写入Iceberg-DWD层数据时,由于在Kafka “KAFKA-ODS-TOPIC”topic中每条数据都已经有对应写入kafka的topic信息,所以这里我们只需要读取“KAFKA-ODS-TOPIC”topic中的数据写入到Iceberg-DWD层中,另外动态获取每条数据写入Kafka topic信息将每条数据写入到对应的topic即可。以上代码执行后在,在对应的Kafka “KAFKA-DWD-USER-LOGIN-TOPIC” topic中都有对应的数据。原创 2022-09-08 13:26:14 · 1389 阅读 · 6 评论 -
湖仓一体电商项目(九):业务实现之编写写入DIM层业务代码
编写代码读取Kafka “KAFKA-DIM-TOPIC” topic维度数据通过Phoenix写入到HBase中,我们可以通过topic中每条数据获取该条数据对应的phoenix表名及字段名动态创建phoenix表以及插入数据,这里所有在mysql“lakehousedb.dim_tbl_config_info”中配置的维度表都会动态的写入到HBase中。这里使用Flink处理对应topic数据时如果维度数据需要清洗还可以进行清洗。原创 2022-09-02 16:00:06 · 1466 阅读 · 35 评论 -
湖仓一体电商项目(八):业务实现之编写写入ODS层业务代码
以上两个方面中第一个方面需要再Hive中预先创建对应的Iceberg表,才能写入,第二个方面不好分辨topic“KAFKA-DB-BUSSINESS-DATA”中哪些binlog数据是事实数据哪些binlog是维度数据,所以这里我们在mysql 配置表“lakehousedb.dim_tbl_config_info”中写入表信息,这样通过Flink获取此表维度表信息进行广播与Kafka实时流进行关联将事实数据和维度数据进行区分。在Iceberg-ODS层中对应的表中也有数据。...原创 2022-08-30 12:05:38 · 3043 阅读 · 109 评论 -
湖仓一体电商项目(七):业务需求和分层设计及流程图
在设计湖仓分层时,我们将维度数据存储在HBase中,将事实数据存储在Iceberg数仓分层中。针对此topic中数据我们需要通过Flink代码进行处理,Flink代码会将所有业务库中的数据保留一份完整数据到Iceberg ODS层中,针对维度数据会将数据进行过滤存储在Kafka 中,方便后续维度数据处理,另外为了使代码重启后消费数据位置信息得到保证,这里我们将所有事实数据也存储在Kafka中,后续各层也是按照此逻辑执行。...原创 2022-08-06 10:41:07 · 949 阅读 · 6 评论 -
湖仓一体电商项目(六):大屏可视化工具腾讯云图
腾讯云图(Tencent Cloud Visualization,TCV) 是一站式数据可视化展示平台,旨在帮助用户快速通过可视化图表展示海量数据,10 分钟零门槛打造出专业大屏数据展示。精心预设多种行业模板,极致展示数据魅力。采用拖拽式自由布局,无需编码,全图形化编辑,快速可视化制作。腾讯云图支持多种数据来源配置,支持数据实时同步更新,同时腾讯云图基于 WEB 页面渲染,可灵活投屏多种屏幕终端。......原创 2022-08-05 19:21:46 · 1205 阅读 · 22 评论 -
湖仓一体电商项目(五):内网穿透工具
一般开发完成接口部署后可以在本地使用localhost或者127.0.0.1来访问,在同一个局域网内的机器也可以通过访问局域网IP来实现接口访问,但是外网无法直接访问,我们需要使用腾讯云图来访问局域网内开发的接口,这就需要用到内网穿透工具,内网穿透工具可以让我们的局域网内部署的数据接口实现被外网访问。目前内网穿透工具非常多,例如:花生壳、Net123、网云穿、Ngrok、闪库、AllProxy等。这里我们使用网云穿工具来实现内网穿透。...原创 2022-08-04 21:45:28 · 483 阅读 · 6 评论 -
湖仓一体电商项目(四):项目数据种类与采集
当用户浏览网站触发对应的接口时,日志采集接口根据配合的log4j将用户浏览信息写入对应的目录中,然后通过Flume监控对应的日志目录,将用户日志数据采集到Kafkatopic“KAFKA-USER-LOG-DATA”中。实时数仓项目中的数据分为两类,一类是业务系统产生的业务数据,这部分数据存储在MySQL数据库中,另一类是实时用户日志行为数据,这部分数据是用户登录系统产生的日志数据。启动代码后,我们会在Kafka“KAFKA-USER-LOG-DATA”topic中看到监控到的用户日志数据。...原创 2022-07-30 18:53:11 · 1603 阅读 · 74 评论 -
湖仓一体电商项目(三):从头搭建12个大数据项目基础组件
在node1、node2、node3节点上/etc/clickhouse-server/config.d路径下下配置metrika.xml文件,默认clickhouse会在/etc路径下查找metrika.xml文件,但是必须要求metrika.xml上级目录拥有者权限为clickhouse,所以这里我们将metrika.xml创建在/etc/clickhouse-server/config.d路径下,config.d目录的拥有者权限为clickhouse。每个分片的副本,默认每个分片配置了一个副本。...原创 2022-07-27 12:35:58 · 2732 阅读 · 67 评论 -
湖仓一体电商项目(二):项目使用技术及版本和基础环境准备
这里我们使用5台节点来安装各个大数据组件,每台节点给了3G内存,4个core,并且每台节点已经关闭防火墙、配置主机名、设置yum源、各个节点时间同步、各个节点两两免密、安装JDK操作。下篇一一进行基础技术组件搭建。...原创 2022-07-25 07:30:54 · 1224 阅读 · 18 评论 -
湖仓一体电商项目(一):项目背景和架构介绍
湖仓一体实时电商项目是基于某宝商城电商项目的电商数据分析平台,本项目在技术方面涉及大数据技术组件搭建,湖仓一体分层数仓设计、实时到离线数据指标分析及数据大屏可视化,项目所用到的技术组件都从基础搭建开始,目的在于湖仓一体架构中数据仓库与数据湖融合打通,实现企业级项目离线与实时数据指标分析。在业务方面目前暂时涉及到会员主题与商品主题,分析指标有用户实时登录信息分析、实时浏览pv/uv分析、实时商品浏览信息分析、用户积分指标分析,后续还会继续增加业务指标和完善架构设计。...原创 2022-07-22 10:12:46 · 5361 阅读 · 92 评论 -
数据湖(二十):Flink兼容Iceberg目前不足和Iceberg与Hudi对比
文章目录Flink兼容Iceberg目前不足和Iceberg与Hudi对比一、Flink兼容Iceberg目前不足二、Iceberg与Hudi对比Iceberg和Hudi都是数据湖技术,从社区活跃度上来看,Iceberg有超越Hudi的趋势。他们有以下共同点:Iceberg与Hudi之间不同点在于以下几点:Iceberg只支持一种表存储模式,就是有metadata file、manifest file和data file组成存储结构,查询时首先查找Metadata元数据进而过滤找到对应的 SnapShot对原创 2022-07-17 08:29:34 · 1641 阅读 · 23 评论 -
数据湖(十九):SQL API 读取Kafka数据实时写入Iceberg表
我们可以看到控制台上有对应实时数据输出,查看对应的IcbergHDFS目录,数据写入成功。原创 2022-07-15 09:41:30 · 1131 阅读 · 18 评论 -
数据湖(十八):Flink与Iceberg整合SQL API操作
文章目录Flink与Iceberg整合SQL API操作一、SQL API 创建Iceberg表并写入数据1、创建新项目,导入如下maven依赖包2、编写Flink SQL 创建Iceberg表并写入数据3、在Hive中映射Iceberg表并查询二、SQL API 批量查询Iceberg表数据三、SQL API 实时查询Iceberg表数据四、SQL API指定基于快照实时增量读取数据Flink SQL 在操作原创 2022-07-13 23:40:42 · 1440 阅读 · 16 评论 -
数据湖(十七):Flink与Iceberg整合DataStream API操作
文章目录Flink与Iceberg整合DataStream API操作一、DataStream API 实时写入Iceberg表1、首先在Maven中导入以下依赖2、编写代码使用DataStream API将Kafka数据写入到Iceberg表3、在Kafka 中创建代码中指定的“flink-iceberg-topic”并启动代码生产数据4、通过Hive查看保存到Iceberg中的数据二、DataStream API 批量/实时读取Iceberg表1、批量/全量读取2、实时读取三、原创 2022-07-12 23:35:10 · 1565 阅读 · 42 评论 -
数据湖(十六):Structured Streaming实时写入Iceberg
文章目录Structured Streaming实时写入Iceberg一、创建Kafka topic二、编写向Kafka生产数据代码三、编写Structured Streaming读取Kafka数据实时写入Iceberg四、查看Iceberg中数据结果目前Spark中Structured Streaming只支持实时向Iceberg中写入数据,不支持实时从Iceberg中读取数据,下面案例我们将使用Structured Streaming从Kafka中实时读取数据,然后将结果实时写入到Iceberg中。启动原创 2022-07-10 17:16:27 · 1327 阅读 · 20 评论 -
数据湖(十五):Spark与Iceberg整合写操作
文章目录Spark与Iceberg整合写操作一、INSERT INTO二、MERGE INTO1、首先创建a表和b表,并插入数据2、使用MERGE INTO 语法向目标表更新、删除、新增数据3、INSERT OVERWRITE四、DELETE FROM五、UPDATE六、DataFrame API 写入Iceberg表"insert into"是向Iceberg表中插入数据,有两种语法形式:"INSERT INTO tbl VALUES原创 2022-07-07 20:49:01 · 1700 阅读 · 20 评论 -
数据湖(十四):Spark与Iceberg整合查询操作
文章目录Spark与Iceberg整合查询操作一、DataFrame API加载Iceberg中的数据二、查询表快照三、查询表历史 四、查询表data files五、查询Manifests六、查询指定快照数据七、根据时间戳查询数据八、回滚快照九、合并Iceberg表的数据文件十、删除历史快照Spark操作Iceberg不仅可以使用SQL方式查询Iceberg中的数据,还原创 2022-07-05 13:19:45 · 1851 阅读 · 40 评论 -
数据湖(十三):Spark与Iceberg整合DDL操作
文章目录Spark与Iceberg整合DDL操作一、CREATE TABLE 创建表二、CREATE TAEBL ... AS SELECT1、创建表hadoop_prod.default.mytbl,并插入数据2、使用“create table ... as select”语法创建表mytal2并查询 三、REPLACE TABLE ... AS SELECT1、创建表“hadoop_prod.default.mytbl3”,并插入数据、展示2、重建表“hado原创 2022-07-04 10:42:44 · 1185 阅读 · 36 评论 -
数据湖(十二):Spark3.1.2与Iceberg0.12.1整合
文章目录Spark3.1.2与Iceberg0.12.1整合一、向pom文件导入依赖二、SparkSQL设置catalog配置三、使用Hive Catalog管理Iceberg表1、创建表2、插入数据3、查询数据4、删除表四、用Hadoop Catalog管理Iceberg表1、创建表2、插入数据3、查询数据4、创建对应的Hive表映射数据5、删除表Spark可以操作Iceberg数据湖,这里使用的Iceberg的版本为0.12.1,此版本与Spark2.4版本之上兼容。由于在Spark2.4原创 2022-07-02 13:42:21 · 2797 阅读 · 106 评论 -
数据湖(十一):Iceberg表数据组织与查询
文章目录Iceberg表数据组织与查询一、下载avro-tools jar包二、在Hive中创建Iceberg表并插入数据三、查看Iceberg底层数据存储1、查询最新快照数据2、查询某个快照的数据3、根据时间戳查看某个快照的数据由于后期需要查看avro文件内容,我们可以通过avro-tool.jar来查看avro数据内容。可以在以下网站中下载avro-tools对应的jar包,下载之后上传到node5节点上:“https://mvnrepository.com/a原创 2022-06-30 12:11:28 · 2057 阅读 · 42 评论 -
数据湖(十):Hive与Iceberg整合
Iceberg就是一种表格式,支持使用Hive对Iceberg进行读写操作,但是对Hive的版本有要求,如下:操作Hive 2.xHive 3.1.2CREATE EXTERNAL TABLE√√CREATE TABLE√√DROP TABLE√√SELECT√√INSERT INTO√√这里基于Hive3.1.2版本进行Hive操作Iceberg表讲解。想要使用Hive支持查询Iceberg表,首先需要下载“iceberg-hive-runtime.jar”,Hive通过该Jar可以加载Hive或者更新I原创 2022-06-25 06:00:00 · 2626 阅读 · 30 评论 -
数据湖(九):Iceberg特点详述和数据类型
Iceberg特点详述和数据类型原创 2022-06-18 15:30:00 · 2134 阅读 · 2 评论 -
数据湖(八):Iceberg数据存储格式
数据文件是Apache Iceberg表真实存储数据的文件,一般是在表的数据存储目录的data目录下,如果我们的文件格式选择的是parquet,那么文件是以“.parquet”结尾,例如:00000-0-root_20211212192602_8036d31b-9598-4e30-8e67-ce6c39f034da-job_1639237002345_0025-00001.parquet 就是一个数据文件。Iceberg每次更新会产生多个数据文件(data files)。快照代表一张表在某个时刻的状态。每个原创 2022-06-17 22:00:00 · 1481 阅读 · 12 评论 -
数据湖(七):Iceberg概念及回顾什么是数据湖
Apache Iceberg是一种用于大型数据分析场景的开放表格式(Table Format)。Iceberg使用一种类似于SQL表的高性能表格式,Iceberg格式表单表可以存储数十PB数据,适配Spark、Trino、PrestoDB、Flink和Hive等计算引擎提供高性能的读写和元数据管理功能,Iceberg是一种数据湖解决方案......原创 2022-06-15 19:06:13 · 1462 阅读 · 31 评论 -
数据湖(六):Hudi与Flink整合
Hudi0.8.0版本与Flink1.12.x之上版本兼容,目前经过测试,Hudi0.8.0版本开始支持Flink,通过Flink写数据到Hudi时,必须开启checkpoint,至少有5次checkpoint后才能看到对应hudi中的数据。但是应该是有一些问题,目前问题如下:在本地执行Flink代码向Flink写数据时,存在“java.lang.AbstractMethodError: Method org/apache/hudi/sink/StreamWriteOperatorCoordinat原创 2022-06-03 06:00:00 · 2342 阅读 · 25 评论