IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 离线数仓之业务数据的导入和处理 -> 正文阅读

[大数据]离线数仓之业务数据的导入和处理

讲的好不好不知道,尽最大努力去讲

数据的同步

????????上篇讲过使用Sqoop将Mysql和Hdfs的数据进行互导。

????????本篇是离线数仓的第二篇。讲的是业务数据的处理。

????????离线数仓基本业务数据都存储在Mysql中,然后再将Mysql中的数据通过Sqoop进行数据传输到Hdfs上面。

????????在Hive里面创建相应的表,加载对应目录的数据到Hive表中。

????????这仅仅只是ODS层的操作。

????????ODS层的数据基本上都是源数据,没有经过修改和筛选的,是最接近业务的数据。关于ODS层的细讲,明天会写一篇博客讲讲ODS层。绝不摆烂,一定写。

数据同步的引发的不同操作

????????数据同步的关键就是在于,每个表的数据的属性不同。每个表是不一样的。

????????首先,所谓的电商项目,将业务存储在Mysql表中,但是Mysql中存储的表,并不是一张表,因为一张表无法将电商的全部表示出来。

????????举个例子。

????????SPU,商品聚合的最小单位,一个IPhone手机就是一个SPU

????????SKU,一个银色的,256G内存的Iphone手机就是SKU.

????????拿苹果手机来讲,如果以苹果手机设计电商表,一张表是不够。

????????首先,苹果手机会在商品表里面,商品表记载了各个手机的信息。也就是SKU。

?

????????上图就是一个简单的例子,一个苹果手机,后面会有各种型号。厂家,出厂时间。这些是苹果手机的属性,存储在商品信息表里面。

????????手机又不止一个苹果手机,还有其它种类的手机,因此苹果手机还会存在于品牌表里面。

????????电商,电商,每购买一部苹果手机,也就是所谓的下单,就会在订单表中出现。

????????如果苹果手机参与????????了618折扣,那么苹果手机还会出现在活动信息表里面

????????用户领了优惠券,那么用户最终购买的苹果手机的钱并不是真正到电商里面的钱(该钱指的是利润)原本利润2000元,因为使用了优惠券,又少了四百元。最终的利润为1600元。

非常多的表如何丝滑的导入到HDFS

????????一个苹果手机就牵扯到了这么多的表,如何将Mysql中的数据同步到HDFS上

????????采用不同的策略。

1.每日全量同步

????????采用这种同步策略,就是每天都将Mysql中的表全部的同步过去。

????????采用这种策略的表,一般数据量不大,而且每天数据都会有新增和减少,需要我们时时刻刻去对比。

????????如果小米手机2022.1.27参加了新人优惠500的活动,这个活动小米只有一天,第二天就不参加了。相当于,小米手机今天参加这个活动,那么今天在商品活动表里面就要有小米手机的数据,第二天这个商品活动表里面就不应该有小米手机的数据。

????????这种情况。商品活动表就需要进行每日的同步,来确定哪个商品在该天参加活动。

?

2.增量同步

增量同步很简单,每天将新增加的数据存储在源表中,

?

3.只存储一次

????????这种表,只需要同步一次,就再也不需要同步。

????????省份表。这个是既定的事实,是不会改变的事实

业务数据首次同步

????????第一次同步数据,需要将所有的业务数据都进行同步。

????????因为表很多,我们总不能一次写一个Sqoop语句来同步一个表,这就是无效化工作。

????????通过写Shell脚本就可以完成所有业务数据或者个别数据的同步

#! /bin/bash ?
APP=gmall 
sqoop=/opt/module/sqoop/bin/sqoop ? 
if [ -n "$2" ] ;then ???do_date=$2
 else 
    echo "请传入日期参数" ?
 exit 
fi ? 
import_data(){
$sqoop import \ 
--connect jdbc:mysql://hadoop102:3306/$APP?\
--username root \ 
--password 000000 \ 
--target-dir /origin_data/$APP/db/$1/$do_date \ 
--delete-target-dir \ --query "$2 where \$CONDITIONS"?\ 
--num-mappers 1 \ --fields-terminated-by '\t' \ 
--compress \ --compression-codec lzop \ 
--null-string '\\N' \ --null-non-string '\\N' 
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /origin_data/$APP/db/$1/$do_date import_order_info(){ ??import_data order_info "select ????????????????????????????id, ????????????????????????????total_amount, ????????????????????????????order_status, ????????????????????????????user_id, ????????????????????????????payment_way, ????????????????????????????delivery_address, ????????????????????????????out_trade_no, ????????????????????????????create_time, ????????????????????????????operate_time, ????????????????????????????expire_time, ????????????????????????????tracking_no, ????????????????????????????province_id, ????????????????????????????activity_reduce_amount, ????????????????????????????coupon_reduce_amount, ??????????????????????????? ????????????????????????????original_total_amount, ????????????????????????????feight_fee, ????????????????????????????feight_fee_reduce ????? ????????????????????????from order_info" }
 case $1 in ??"order_info") ???
??import_order_info ;;

如果需要同步user_info表里面的信息。

mysql_to_hdfs_init.sh user_info 2022-01-27 


????????将Mysql中的user_info表同步到target-dir /origin_data/$APP/db//2022-01-07 这个目录里面。 后续将在这个目录创建相应的ods_电商_user_info表

业务数据每日同步

????????业务数据的每日同步同样也是写脚本

????????写脚本后就可以将数据同步了。

????????具体的脚本可以去尚硅谷的资料里面去看。

总结:

????????这篇博客只是讲解一下从Mysql中的表,同步到hdfs上的策略。

????????明天会实物来讲解如何将ods层的导入的相应表的里面,并且对表进行筛选,连接。将需要的数据放入到dw层。

? ? ? ? 明天一定好好写文章

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 11:59:11  更:2022-01-28 12:01:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:35:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码