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

news/2024/5/19 1:34:03/文章来源:https://blog.csdn.net/xiaoweite1/article/details/126980954

文章目录

业务实现之编写写入DWD层业务代码

一、代码编写

二、​​​​​​​​​​​​​​创建Iceberg-DWD层表

1、在Hive中添加Iceberg表格式需要的包

2、创建Iceberg表

三、代码测试

1、在Kafka中创建对应的topic

2、将代码中消费Kafka数据改成从头开始消费

3、执行代码,查看对应结果


业务实现之编写写入DWD层业务代码

一、​​​​​​​代码编写

Flink读取Kafka topic “KAFKA-ODS-TOPIC” 数据写入Iceberg-DWD层也是复用第一个业务代码,这里只需要在代码中加入写入Iceberg-DWD层代码即可,代码如下:

//插入 iceberg - dwd 层 会员浏览商品日志信息 :DWD_BROWSELOG
tblEnv.executeSql(s"""|insert into hadoop_iceberg.icebergdb.DWD_BROWSELOG|select| log_time,| user_id2,| user_ip,| front_product_url,| browse_product_url,| browse_product_tpcode,| browse_product_code,| obtain_points| from ${table} where iceberg_ods_tbl_name = 'ODS_BROWSELOG'""".stripMargin)

另外,在Flink处理此topic中每条数据时都有获取对应写入后续Kafka topic信息,本业务对应的每条用户日志数据写入的kafka topic为“KAFKA-DWD-BROWSE-LOG-TOPIC”,所以代码可以复用。

二、​​​​​​​​​​​​​​创建Iceberg-DWD层表

代码在执行之前需要在Hive中预先创建对应的Iceberg表,创建Icebreg表方式如下:

1、在Hive中添加Iceberg表格式需要的包

启动HDFS集群,node1启动Hive metastore服务,在Hive客户端启动Hive添加Iceberg依赖包:

#node1节点启动Hive metastore服务
[root@node1 ~]# hive --service metastore &#在hive客户端node3节点加载两个jar包
add jar /software/hive-3.1.2/lib/iceberg-hive-runtime-0.12.1.jar;
add jar /software/hive-3.1.2/lib/libfb303-0.9.3.jar;

2、创建Iceberg表

这里创建Iceberg-DWD表有“DWD_BROWSELOG”,创建语句如下:

CREATE TABLE DWD_BROWSELOG  (log_time string,user_id string,user_ip string,front_product_url string,browse_product_url string,browse_product_tpcode string,browse_product_code string,obtain_points string
)STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler' 
LOCATION 'hdfs://mycluster/lakehousedata/icebergdb/DWD_BROWSELOG/' 
TBLPROPERTIES ('iceberg.catalog'='location_based_table',
'write.metadata.delete-after-commit.enabled'= 'true',
'write.metadata.previous-versions-max' = '3'
);

三、代码测试

以上代码编写完成后,代码执行测试步骤如下:

1、在Kafka中创建对应的topic

#在Kafka 中创建 KAFKA-DWD-BROWSE-LOG-TOPIC topic
./kafka-topics.sh --zookeeper node3:2181,node4:2181,node5:2181 --create --topic KAFKA-DWD-BROWSE-LOG-TOPIC --partitions 3 --replication-factor 3#监控以上topic数据
[root@node1 bin]# ./kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --topic KAFKA-DWD-BROWSE-LOG-TOPIC

2、将代码中消费Kafka数据改成从头开始消费

代码中Kafka Connector中属性“scan.startup.mode”设置为“earliest-offset”,从头开始消费数据。

这里也可以不设置从头开始消费Kafka数据,而是直接启动向日志采集接口模拟生产日志代码“RTMockUserLogData.java”,需要启动日志采集接口及Flume。

3、执行代码,查看对应结果

以上代码执行后在,在对应的Kafka “KAFKA-DWD-BROWSE-LOG-TOPIC” topic中都有对应的数据。在Iceberg-DWD层中对应的表中也有数据。

Kafka中结果如下:

Iceberg-DWD层表”DWD_BROWSELOG”中的数据如下:


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_11793.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【展馆攻略】展馆室内精准定位导航服务,便捷无忧,所见必达!

近年来,室内定位导航服务被各大商场、园区、景区等场所广泛使用,逐渐融入到人们日常生活中。室内地图从传统的平面信息图发展到智能化3D可视化交互展示,实现了室内综合场景的精准定位导航。 在面对室内或者建筑物遮挡区域,室内导航…

浏览器如何渲染页面?

DOM 浏览器渲染页面的过程就像是盖房子,一般先请求服务器得到HTML文件,HTML文件就相当于网页的框架结构,不过一开始浏览器得到的是显示字节内容的HTML文件,必须要内化为自己看的懂的语言才行,于是就把字节转化为字符&…

vue小案列(hello world)

目录 1 页签图标的报错解决 2 创建vue实例 3 初识Vue分析 1 页签图标的报错解决 1 首先,在我们的html中定义一个容器,然后右键(Open with LIve Server)打开,需要安装LIve Server插件 打开之后发现控制台报如下错误&a…

2022年服装进销存软件排行榜重磅出炉!

小编调研了一下身边做服装行业的老板,普遍反映如今服装实体店越来越难做了,日常经营过程中,难免会遇到各种问题:商品种类多、款式多、库存多、活动多……这些都让老板们应接不暇,尽管每天早出晚归地管理店铺&#xff0…

怎么音频转文字?快把这些方法收好

相信不少的小伙伴,经常需要对自己的录音文件进行整理归纳吧,其中不乏是课堂的重点知识、会议上的重点纪要、谈判中的重点内容。那小伙伴们平时在整理的时候,大概都需要花费多少时间呢?为了能够将音频的内容完整呈现出来&#xff0…

SpringBoot多数据源

使用场景 在实际开发中,可能遇到多数据源的场景。 业务复杂(数据量大) 数据分布在不同的数据库中,对业务数据进行垂直拆分。 可以拆分为微服务架构,依赖的业务可以通过远程调用的方式来是实现,那么这种方…

机器学习中常见性能度量汇总

前言 如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 回归 在回归任务上,目前最常用的性能度量方式是均方误差 (Mean Squared Error, MSE): MSE1m∑i1…

flex布局

flex布局 开启flex功能 <html><head><style>.container{border: 1px solid #000;width: 400px;height: 400px;margin-left: 20px;margin-top: 20px;display: flex; // 开启flex布局}.item{width: 100px;height: 100px;color: #fff;text-align: center;line…

kubernetes(2)k8s环境搭建:kubeadm安装、二进制方式安装

环境平台规划 k8s里面之前我们了解过&#xff0c;主要的内容是master和node&#xff0c;所有这里可以划分为 单master集群多master集群 单master集群 缺点&#xff1a;master挂掉后&#xff0c;便不能去管理node节点了 多master集群 与之前的区别便是多了master 服务器硬件…

Prometheus监控进程

Prometheus监控进程 process-export主要用来做进程监控&#xff0c;比如某个服务的进程数、消耗了多少CPU、内存等资源。 一、process-exporter使用 ‍ 1.1 下载 process-exporter process-exporter GibHUB地址 process-exporter 下载地址 process-exporter可以使用命令行…

图解LeetCode——854. 相似度为 K 的字符串(难度:困难)

一、题目 对于某些非负整数 k &#xff0c;如果交换 s1 中两个字母的位置恰好 k 次&#xff0c;能够使结果字符串等于 s2 &#xff0c;则认为字符串 s1 和 s2 的 相似度为 k 。 给你两个字母异位词 s1 和 s2 &#xff0c;返回 s1 和 s2 的相似度 k 的最小值。 二、示例 2.1…

C语言手写HTTPD网站服务器

网站服务器&#xff08;HTTPD&#xff09;已经有很多版本&#xff0c;但是大部分对初学者都非常不友好。适合初学者学习的httpd服务器&#xff0c;最负盛名的当数tinyhttpd, 但是这个版本&#xff0c;是基于Linux系统的&#xff0c;而且配套的CGI也是使用perl语言写的&#xff…

宝塔面板修改secure_file_priv设置

1、secure_file_priv文件作用 mysql读取系统文件权限的设置参数 2、查询secure_file_priv设置 show variables like %secure%; 3、修改secure_file_priv设置 设置 secure_file_priv"/" 需要修改mysql配置文件my.cnf my.cnf文件有两个位置 /etc/my.cnf /www/serv…

线程安全简述

目录 1、线程是否安全 2、出现线程安全的原因如下&#xff1a; 3、原子性问题 4、synchronized关键字 1、锁对象 2、用法&#xff1a; 3、可重入锁 5、内存可见性 6、volatile关键字 7、JMM 1、线程是否安全 线程不安全就是一些代码在多线程的运行状态下&#xff0c…

一个基于.Net Core开发的适合外贸商城系统

今天给大家推荐一个适合外贸的商城系统。 项目简介 这是一个基于.Net Core开发的&#xff0c;兼容PC、平板、移动端的商城系统。被下载次数超过300w&#xff0c;拥有最活跃的成员&#xff0c;由专业团队开发与支持。支持PayPal、信用卡、发票支付。 技术架构 1、跨平台&…

Jmeter电商系统压测实战<二>

目录一、Jmeter优化tips二、Jmeter的使用建议-参数配置1. XX:MaxMataspaceSize&#xff08;jdk8的参数&#xff09;2. -Xmx2048m3. -Xms1g三、Jmeter插件1. 介绍及安装2. 常用插件四、Jmeter日志收集1. 概览2. elk&#xff0c;kibana和es的安装和配置3. Prometheus和Node Expor…

全系标配L2占比首次突破30%,「数据」赛道争夺战一触即发

智能驾驶的进阶战&#xff0c;无论是提升车型产品竞争力&#xff0c;还是为高阶功能和现有功能优化提供闭环数据迭代&#xff0c;全系标配已经成为主流趋势。 如果说智能化1.0阶段&#xff0c;车企拼的是技术的快速落地和高阶能力的标杆效应&#xff0c;那么2.0阶段就是拼规模…

python中validators库用法详解

首先安装validators库&#xff1a; pip install validators validators.between(value, minNone, maxNone) 验证一个数字value是否在最小值min和最大值max之间&#xff0c;value不仅仅可以是整数&#xff0c;也可以是其它数据类型&#xff0c;例如floats, decimals 和 dates。…

Three使用OimoPhysics实现物体相关物理特性实例

基础环境搭建&#xff1a; InstancedMesh()创建的立方体物品集合&#xff1a; boxes new THREE.InstancedMesh(new THREE.BoxGeometry(0.1, 0.1, 0.1),new THREE.MeshLambertMaterial(),100)const matrix new THREE.Matrix4()const color new THREE.Color()for (let i 0; i…

Win11 22H2 22621.521大版本更新!

注意&#xff01;注意&#xff01;Win11 22H2 22621.521大版本更新啦&#xff0c;此次更新带来了不小的优化和改进&#xff0c;包括带有标签的更新文件资源管理器、更丰富的开始菜单和任务栏体验、增强的搜索功能、对改进的安全性和无密码登录的支持等等。 让每个人都能更轻松、…