大数据-242 离线数仓 - 电商核心交易 数据导入 全量数据导入方案 产品分类、商家店铺、地域组织

点一下关注吧!!!非常感谢!!持续更新!!!

Java篇开始了!

目前开始更新 MyBatis,一起深入浅出!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(已更完)
  • DataX(已更完)
  • Tez(已更完)
  • 数据挖掘(已更完)
  • Prometheus(已更完)
  • Grafana(已更完)
  • 离线数仓(正在更新…)

章节内容

上节我们完成了如下的内容:

  • 电商核心交易 业务数据表结构
  • 订单、产品、分类、店铺、支付表

在这里插入图片描述

数据导入

在这里插入图片描述
已经确定的事情:DataX、导出7张表的数据。
MySQL导出:全量导出、增量导出(导出前一天的数据)

业务数据保存在MySQL中,每日凌晨上一天的表数据:

  • 表数据量少,采用全量方式导出MySQL
  • 表数据量多,而且根据字段能区分出每天新增数据,采用增量的方式导出MySQL

在这里插入图片描述
3张增量表:

  • 订单表 wzk_trade_orders
  • 订单产品表 wzk_order_produce
  • 产品信息表 wzk_product_info

4张全量表:

  • 产品分量表 wzk_product_category
  • 商家店铺表 wzk_shops
  • 商家地域组织表 wzk_shop_admin_org
  • 支付方式表 wzk_payment

数据库导入

上述的内容中,可以先把表构建出来,然后生成一批数据,用于测试,我这里就导入生成好的数据了。

在这里插入图片描述

业务需求

电商系统业务中最关键的业务,电商的运营活动都是围绕这个主题展开。
选取的指标包括:订单数、商品数、支付金额,对这些指标按销售区域、商品类型分析。

在大数据的分析中,"电商核心交易"是指电商平台上所有与商品交易相关的核心行为和交易数据的集合。具体来说,核心交易涵盖了商品的浏览、加购物车、下单、支付、发货、收货等一系列行为,它们直接影响电商平台的运营效率、用户体验和商业价值。

需求板块

电商平台的核心交易可以分为以下几个主要环节,每个环节都涉及大量数据的收集、存储和分析:

  • 商品浏览:用户浏览商品的行为数据,例如用户查看了哪些商品、查看时长、是否点击了相关广告或推荐商品等。这些数据能够帮助平台了解用户的兴趣点,进而优化商品推荐和个性化营销策略。
  • 加入购物车:用户将商品添加到购物车中的行为。通过分析购物车中的商品,可以获取用户的购买意图和倾向,帮助商家调整商品定价、库存和促销策略。
  • 下单:用户在电商平台上完成的订单生成行为。包括订单的创建、订单内容、用户的收货地址、选择的支付方式等数据。订单数据是电商交易中的核心,通常涉及大量的数据信息,要求系统能够高效地处理和存储。
  • 支付:支付是交易中至关重要的环节,支付数据可以通过支付方式、支付成功与否、支付金额、支付时间等维度进行分析。这部分数据可以帮助平台评估不同支付方式的受欢迎程度,并进行相应的优化。
  • 发货:商品发货数据记录了商家发货的时间、物流公司、物流单号等信息。通过对发货数据的分析,可以判断出物流时效、发货效率等关键指标,进一步优化供应链和物流流程。
  • 收货和评价:用户收到商品后的评价、退换货行为等。评价数据不仅反映了商品的质量和用户满意度,还对后续的购买决策产生影响。此外,退换货数据也能够反映出商品质量问题和物流中的痛点。

全量数据导入

  • MySQL => HDFS => Hive
  • 每日加载全量数据,形成新的分区
  • MySQL Reader => HDFS Writer

产品分类表

vim /opt/wzk/datax/product_category.json

写入的内容如下所示:

  • 数据量小的表没有必要使用多个channel,使用多个channel会生成多个小文件
  • 执行命令之前要在HDFS上创建对应的目录:/user/data/trade.db/product_category/dt=yyyy-mm-dd
{"job": {"setting": {"speed": {"channel": 1}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "hive","password": "hive@wzk.icu","column": ["catId", "parentId", "catName", "isShow", "sortNum", "isDel", "createTime", "level"],"connection": [{"table": ["wzk_product_category"],"jdbcUrl": ["jdbc:mysql://h122.wzk.icu:3306/ebiz"]}]}},"writer": {"name": "hdfswriter","parameter": {"defaultFS": "hdfs://h121.wzk.icu:9000","fileType": "text","path": "/user/data/trade.db/product_category/dt=$do_date","fileName": "product_category_$do_date","column": [{"name": "catId","type": "INT"},{"name": "parentId","type": "INT"},{"name": "catName","type": "STRING"},{"name": "isShow","type": "TINYINT"},{"name": "sortNum","type": "INT"},{"name": "isDel","type": "TINYINT"},{"name": "createTime","type": "STRING"},{"name": "level","type": "TINYINT"}],"writeMode": "append","fieldDelimiter": ","}}}]}
}

写入的结果如下图:
在这里插入图片描述

加载数据的过程如下:

do_date='2020-07-01'
# 创建目录
hdfs dfs -mkdir -p /user/data/trade.db/product_category/dt=$do_date
# 数据迁移
python $DATAX_HOME/bin/datax.py -p "-Ddo_date=$do_date" /opt/wzk/datax/product_category.json
# 加载数据
# hive 还没有表,后续再执行
hive -e "alter table ods.ods_trade_product_category add partition(dt='$do_date')"

对应的截图如下所示:
DataX将MySQL数据加载到HDFS上:
在这里插入图片描述

商家店铺表

wzk_shops => ods.ods_trade_shops

vim /opt/wzk/datax/shops.json

创建的内容:

{"job": {"setting": {"speed": {"channel": 1},"errorLimit": {"record": 0}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "hive","password": "hive@wzk.icu","column": ["shopId","userId","areaId","shopName","shopLevel","status","createTime","modifyTime"],"connection": [{"table": ["wzk_shops"],"jdbcUrl": ["jdbc:mysql://h122.wzk.icu:3306/ebiz"]}]}},"writer": {"name": "hdfswriter","parameter": {"defaultFS": "hdfs://h121.wzk.icu:9000","fileType": "text","path": "/user/data/trade.db/shops/dt=$do_date","fileName": "shops_$do_date","column": [{"name": "shopId","type": "INT"},{"name": "userId","type": "INT"},{"name": "areaId","type": "INT"},{"name": "shopName","type": "STRING"},{"name": "shopLevel","type": "TINYINT"},{"name": "status","type": "TINYINT"},{"name": "createTime","type": "STRING"},{"name": "modifyTime","type": "STRING"}],"writeMode": "append","fieldDelimiter": ","}}}]}
}

对应的截图如下所示:
在这里插入图片描述

数据加载执行如下指令:

do_date='2020-07-02'
# 创建目录
hdfs dfs -mkdir -p /user/data/trade.db/shops/dt=$do_date
# 数据迁移
python $DATAX_HOME/bin/datax.py -p "-Ddo_date=$do_date" /opt/wzk/datax/shops.json
# 加载数据
# hive中还没有表 后续再执行
hive -e "alter table ods.ods_trade_shops add
partition(dt='$do_date')"

DataX 数据库数据导入到 HDFS 结果如下:
在这里插入图片描述

商家地域组织表

wzk_shop_admin_org => ods.ods_trade_shop_admin_org

vim /opt/wzk/datax/shop_org.json

编写的内容如下所示:

{"job": {"setting": {"speed": {"channel": 1},"errorLimit": {"record": 0}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "hive","password": "hive@wzk.icu","column": ["id","parentId","orgName","orgLevel","isDelete","createTime","updateTime","isShow","orgType"],"connection": [{"table": ["wzk_shop_admin_org"],"jdbcUrl": ["jdbc:mysql://h122.wzk.icu:3306/ebiz"]}]}},"writer": {"name": "hdfswriter","parameter": {"defaultFS": "hdfs://h121.wzk.icu:9000","fileType": "text","path": "/user/data/trade.db/shop_org/dt=$do_date","fileName": "shop_admin_org_$do_date.dat","column": [{"name": "id","type": "INT"},{"name": "parentId","type": "INT"},{"name": "orgName","type": "STRING"},{"name": "orgLevel","type": "TINYINT"},{"name": "isDelete","type": "TINYINT"},{"name": "createTime","type": "STRING"},{"name": "updateTime","type": "STRING"},{"name": "isShow","type": "TINYINT"},{"name": "orgType","type": "TINYINT"}],"writeMode": "append","fieldDelimiter": ","}}}]}
}

对应的截图如下所示:
在这里插入图片描述
数据加载脚本:

do_date='2020-07-01'
# 创建目录
hdfs dfs -mkdir -p /user/data/trade.db/shop_org/dt=$do_date
# 数据迁移
python $DATAX_HOME/bin/datax.py -p "-Ddo_date=$do_date" /opt/wzk/datax/shop_org.json
# 加载数据
# hive中还没有表 后续再执行
hive -e "alter table ods.ods_trade_shop_admin_org add
partition(dt='$do_date')"

写入的内容如下所示,从数据库将数据加载到HDFS中:
在这里插入图片描述

支付方式表

wzk_payments => ods.ods_trade_payments

vim /opt/wzk/datax/payments.json

对应的内容如下:

{"job": {"setting": {"speed": {"channel": 1},"errorLimit": {"record": 0}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "hive","password": "hive@wzk.icu","column": ["id","payMethod","payName","description","payOrder","online"],"connection": [{"table": ["wzk_payments"],"jdbcUrl": ["jdbc:mysql://h122.wzk.icu:3306/ebiz"]}]}},"writer": {"name": "hdfswriter","parameter": {"defaultFS": "hdfs://h121.wzk.icu:9000","fileType": "text","path": "/user/data/trade.db/payments/dt=$do_date","fileName": "payments_$do_date.dat","column": [{"name": "id","type": "INT"},{"name": "payMethod","type": "STRING"},{"name": "payName","type": "STRING"},{"name": "description","type": "STRING"},{"name": "payOrder","type": "INT"},{"name": "online","type": "TINYINT"}],"writeMode": "append","fieldDelimiter": ","}}}]}
}

对应的截图如下:
在这里插入图片描述

数据导入的过程如下:

do_date='2020-07-01'
# 创建目录
hdfs dfs -mkdir -p /user/data/trade.db/payments/dt=$do_date
# 数据迁移
python $DATAX_HOME/bin/datax.py -p "-Ddo_date=$do_date" /opt/wzk/datax/payments.json
# 加载数据
# hive还没有表 后续再执行
hive -e "alter table ods.ods_trade_payments add
partition(dt='$do_date')"

从MySQL中将数据加载到HDFS中:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【NLP 5、深度学习的基本原理】

目录 一、梯度下降算法 1.引例 —— 找极小值问题 目标: 方法: 2.梯度 例: 3.求解目标 为什么损失函数越小越好 4.梯度下降法 代码实现 5.细节问题 6.梯度爆炸和梯度消失 梯度爆炸 梯度消失 7.过拟合和欠拟合 欠拟合(Underfitting…

云计算对定制软件开发的影响

在当代数字世界中,云计算是改变许多行业(包括定制软件开发)的最伟大的革命性趋势之一。由于这些公司努力寻求更好、更多不同的方式来履行职责,因此云计算与传统的内部部署基础设施相比具有许多不可否认的优势。这种范式转变对定制…

智能交通(8)——腾讯开悟智能交通信号灯调度赛道

本文档用于记录参加腾讯开悟智能信号灯调度赛道的模型优化过程。官方提供了dqn和target_dqn算法,模型的优化在官方提供的代码基础上进行。最终排名是在榜单16,没能进入最后的决赛。 一.赛题介绍 赛题简介:在本地赛题中,参赛团队…

RK3568平台开发系列讲解(IIO篇)IIO缓冲区

🚀返回专栏总目录 文章目录 一、IIO缓冲区的sysfs接口二、IIO缓冲区设置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢IIO缓冲区提供连续的数据捕获,一次可以同时读取多个数据通道。可通过dev/iio:device字符设备节点从用户空间访问缓冲区。在触发器处理程序中,用…

mybatis用pagehelper 然后用CountJSqlParser45,发现自己手写的mapper查询效率很慢

如题 效率慢疑惑 效率慢 分页查询,发现效率很慢,然后发现是比较复杂的sql,CountJSqlParser45它不会帮忙优化掉,就是select多少字段它count的时候也还是这么多字段 框架里的用法是这样的 所以去看了CountJSqlParser45里面的代码,发现如果有group之类的,它就不帮忙把count优化…

k8s,dameonset

Docker容器里应用的日志,默认会保存在宿主机的/var/lib/docker/containers/{{.容器ID}}/{{.容器ID}}-json.log文件里 nodeAffinity toleration DaemonSet可以继续版本回退, kubectl rollout status命令看到这个“滚动更新”的过程,可以查看…

macmini安装ubuntu网卡驱动BCM4360

安装成功效果如下 成功连接wifi 成功分配到IP 执行命令如下 1. sudo apt update 2. sudo apt install broadcom-sta-dkms 3. 重启电脑

OSCP - Proving Grounds - Fanatastic

主要知识点 CVE-2021-43798漏洞利用 具体步骤 执行nmap 扫描,22/3000/9090端口开放,应该是ssh,grafana 和Prometheus Nmap scan report for 192.168.52.181 Host is up (0.00081s latency). Not shown: 65532 closed tcp ports (reset) PORT STA…

24/12/5 算法笔记<强化学习> doubleDQN,duelingDQN

我们前面了解了DQN网络的一些知识,然而DQN还有一些改进的方法,比如doubleDQN和duelingDQN,我们先来将一下doubleDQN和DQN. 先来对比一下 单一网络 vs. 双重网络 DQN:是一个深度神经网络来估计每个动作的Q值 DDQN:使用两个独立的深度神经网络&#xf…

时长输入框、用时输入框

时长输入框、用时输入框 行内组件&#xff0c;用于设定 【时 分 秒】 时长&#xff0c;转存结果为 【毫秒】 <template><div class"time-inputs"><div classtime-input-div v-ifinput><input classtime-input type"number" v-mod…

java反射的基础应用

一、堆内存中的情况 &#xff08;一&#xff09;对象创建与变化 源对象&#xff08;UserBo&#xff09;和目标对象&#xff08;User&#xff09; 在执行UserBo sourceObj new UserBo(username, password);和User targetObj new User();时&#xff0c;分别在堆内存中创建了U…

Unity3D常见的设计模式(五)

系列文章目录 unity知识点 文章目录 系列文章目录&#x1f449;前言&#x1f449;一、桥接模式&#xff08;Bridge&#xff09;&#x1f449;二、适配器模式&#xff08;Adapter&#xff09;&#x1f449;三、 外观模式&#xff08;Facade&#xff09;&#x1f449;四、原型模…

车机端同步outlook日历

最近在开发一个车机上的日历助手&#xff0c;其中一个需求就是要实现手机端日历和车机端日历数据的同步。然而这种需求似乎没办法实现&#xff0c;毕竟手机日历是手机厂商自己带的系统应用&#xff0c;根本不能和车机端实现数据同步的。 那么只能去其他公共的平台寻求一些机会&…

群控系统服务端开发模式-应用开发-邮件工厂结构封装

首先在系统根目录下extend文件夹下创建邮件工厂文件夹并更名叫Mail。 一、邮件发送父类 在Mail目录下创建邮件发送父类并更名为MailSenderInterface.php&#xff0c;代码如下 <?php /*** 邮件发送父类* User: 龙哥三年风水* Date: 2024/12/5* Time: 14:22*/ namespace Ma…

React性能优化

三个可以优化的地方 避免过度多次渲染 组件会在以下情况下重新渲染 注意&#xff1a;例如组件组合的形式&#xff0c;<Test><Counter></Counter></Test>,即使Test发生了重新渲染&#xff0c;Counter也不会重新渲染。另外使用React这样的库或框架时&a…

操作系统学习

问题&#xff1a; 因为想用傲梅来给系统盘扩容&#xff0c;导致无法进入操作系统&#xff0c;报错如下&#xff1a; 无法加载应用程序或操作系统&#xff0c;原因是所需文件丢失或包含错误. 文件:Windowslsystem32lwinload.efi错误代码: 0xc000007b 你需要使用恢复工具。如果…

Web应用程序文件包含-Server2233-解析

B-6 Web应用程序文件包含 任务环境说明:服务器场景名称:Server2233

计算机的错误计算(一百七十五)

摘要 就计算机的错误计算&#xff08;一百七十三&#xff09;与&#xff08;一百七十四&#xff09;中案例&#xff0c;讨论其另外一种形式&#xff1a; 的错误计算问题。 例1. 已知 计算 直接贴图吧&#xff1a; 这样&#xff0c;MATLAB的输出中有4位错误数字&#xff0…

F-K变换法

f-k变换实质上是一种二维傅里叶变换。 在时间域上,对一道地震信号做傅里叶变换,可以得到在时间上不同频度(称为频率)的 波动组分的振幅和相位信息。同样地,在空间上,我们也可以对多道地震信号做类似傅里叶变 换的数值变换,得到在空间上不同频度(称为波数)的波动组分的振幅…

webstorm关闭了弹窗 Confirm Exit 恢复回来

webstorm关闭了 Confirm Exit WebStorm 关闭了“Confirm Exit”功能&#xff0c;意味着当用户尝试关闭IDE时&#xff0c;不会显示确认对话框&#xff0c;直接退出程序。 如果你想要恢复这个功能&#xff0c;可以按照以下步骤操作&#xff1a; 打开WebStorm。 进入设置界面&a…