目录

第一章 电商业务简介

电商业务流程

电商系统表结构

第二章 业务数据采集模块

MySql安装

安装包准备

安装mysql

配置MySQL

业务数据生成

连接MySQL​编辑

创建数据库

生成业务数据

业务数据建模

Sqoop安装

下载解压

修改配置文件

拷贝jdbc驱动

验证sqoop

测试sqoop能否成功连接数据库

sqoop基本使用

同步策略​编辑

全量同步策略​编辑

增量同步策略

​编辑

新增及变化策略​编辑

特殊策略

业务数据导入HDFS

分析表同步策略

业务数据首日同步脚本

业务数据每日同步脚本

第三章 数据库环境准备

Hive安装部署

Hive元数据拷贝到MySql

拷贝驱动

配置Metastore到Mysql

启动hive

初始化元数据库

启动Hive客户端


第一章 电商业务简介

电商业务流程

电商的业务流程可以以一个普通用户的浏览足迹为例进行说明,用户点开电商首页开始浏览,可能会通过分类查询也可能通过全文搜索寻找自己中意的商品,这些商品无疑都是存储在后台的管理系统中的。

当用户寻找到自己中意的商品,可能会想要购买,将商品添加到购物车后发现需要登录,登录后对商品进行结算,这时候购物车的管理和商品订单信息的生成都会对业务数据库产生影响,会生成相应的订单数据和支付数据。

订单正式生成之后,还会对订单进行跟踪处理,直到订单全部完成。

电商的主要业务流程包括用户前台浏览商品时的商品详情的管理,用户商品加入购物车进行支付时用户个人中心&支付服务的管理,用户支付完成后订单后台服务的管理,这些流程涉及到了十几个甚至几十个业务数据表,甚至更多。

电商系统表结构

以下为本电商数仓系统涉及到的业务数据表结构关系。这34个表以订单表、用户表、SKU商品表、活动表和优惠券表为中心,延伸出了优惠券领用表、支付流水表、活动订单表、订单详情表、订单状态表、商品评论表、编码字典表退单表、SPU商品表等,用户表提供用户的详细信息,支付流水表提供该订单的支付详情,订单详情表提供订单的商品数量等情况,商品表给订单详情表提供商品的详细信息。本次讲解以此34个表为例,实际项目中,业务数据库中表格远远不止这些。

电商业务表

后台管理系统

活动信息表

活动规则表

活动商品关联表

平台属性表

平台属性值表

一级分类表

二级分类表

三级分类表

字典表

省份表

地区表

品牌表

购物车表

评价表

优惠券信息表

优惠券优惠范围表

优惠券领用表

收藏表

订单明细表

订单明细活动关联表

订单明细优惠券关联表

订单表

退单表

订单状态流水表

支付表

退款表

SKU平台属性表

SKU信息表

SKU销售属性表

SPU信息表

SPU销售属性表

SPU销售属性值表

用户地址表

用户信息表

第二章 业务数据采集模块

MySql安装

安装包准备

1)将安装包和jdbc驱动上传到/opt/software

2)卸载自带的Mysql-libs

rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps

安装mysql

卸载自带的Mysql-libs

rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps

1)安装MySQL依赖

sudo rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
sudo rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm

2)安装mysql-client

sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm

3)安装mysql-server

sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm

解决办法:

sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm --force --nodeps

4)启动MySQL 查看密码

sudo systemctl start mysqld
sudo cat /var/log/mysqld.log | grep password

配置MySQL

配置只要是root用户 + 密码,在任何主机都能登录MySQL数据库

1)用刚刚查到的密码进入MySQL
mysql -uroot -p2)设置复杂密码(由于MySQL密码策略,此密码必须足够复杂)
set password=password("Qs23=zs32");3)更改MySQL密码策略
set global validate_password_length=4;
set global validate_password_policy=0;4)设置简单好记的密码
set password=password("root");5)进入MySQL库
use mysql6)查询user表
select user,host from user;7)修改user表,把Host表内容修改为%
update user set host="%" where user="root";8)刷新
flush privileges;9)退出
quit;

业务数据生成

连接MySQL

创建数据库

设置数据库名为gmall,编码为utf-8,排序规则为utf8_feneral_ci

导入数据库结构脚本(gmall.sql)

生成业务数据

1)在hadoop102的/opt/module/目录下创建db_log文件夹

mkdir db_log

2)把gmall2020-mock-db-2021-01-22.jar和application.properties上传到hadoop102的/opt/module/db_log路径上

3)修改application.properties相关配置

注意修改密码

logging.level.root=infospring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://hadoop102:3306/gmall?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=rootlogging.pattern.console=%m%nmybatis-plus.global-config.db-config.field-strategy=not_null#业务日期
mock.date=2020-06-14
#是否重置  注意:第一次执行必须设置为1,后续不需要重置不用设置为1
mock.clear=1
#是否重置用户 注意:第一次执行必须设置为1,后续不需要重置不用设置为1
mock.clear.user=1#生成新用户数量
mock.user.count=100
#男性比例
mock.user.male-rate=20
#用户数据变化概率
mock.user.update-rate:20#收藏取消比例
mock.favor.cancel-rate=10
#收藏数量
mock.favor.count=100#每个用户添加购物车的概率
mock.cart.user-rate=50
#每次每个用户最多添加多少种商品进购物车
mock.cart.max-sku-count=8
#每个商品最多买几个
mock.cart.max-sku-num=3 #购物车来源  用户查询,商品推广,智能推荐, 促销活动
mock.cart.source-type-rate=60:20:10:10#用户下单比例
mock.order.user-rate=50
#用户从购物中购买商品比例
mock.order.sku-rate=50
#是否参加活动
mock.order.join-activity=1
#是否使用购物券
mock.order.use-coupon=1
#购物券领取人数
mock.coupon.user-count=100#支付比例
mock.payment.rate=70
#支付方式 支付宝:微信 :银联
mock.payment.payment-type=30:60:10#评价比例 好:中:差:自动
mock.comment.appraise-rate=30:10:10:50#退款原因比例:质量问题 商品描述与实际描述不一致 缺货 号码不合适 拍错 不想买了 其他
mock.refund.reason-rate=30:10:20:5:15:5:5

在该目录下执行如下命令

java -jar gmall2020-mock-db-2021-01-22.jar

5)查看gmall数据库,观察是否有2020-06-14数据出现

业务数据建模

Sqoop安装

下载解压

[software] tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module/mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop

修改配置文件

在/opt/module/sqoop/conf中
重命名配置文件
mv sqoop-env-template.sh sqoop-env.sh
修改配置文件
vim sqoop-env.sh
增加如下内容
export HADOOP_COMMON_HOME=/opt/module/hadoop-3.1.3
export HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3
export HIVE_HOME=/opt/module/hive
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.5.7
export ZOOCFGDIR=/opt/module/zookeeper-3.5.7/conf

拷贝jdbc驱动

(1)将mysql-connector-java-5.1.27-bin.jar 上传到/opt/software路径

(2)进入/opt/sofaware路径,将驱动拷贝到sqoop的lib目录下

cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop/lib/

验证sqoop

(1)可以通过一个command来验证sqoop配置是否正确

会出现一些warning警告,并伴随着帮助命令的输出

测试sqoop能否成功连接数据库

bin/sqoop list-databases --connect jdbc:mysql://hadoop102:3306/ --username root --password root

sqoop基本使用

将mysql中user_info表数据导入到HDFS的/test路径

bin/sqoop import \
connect jdbc:mysql://hadoop102:3306/gmall \
username root \
password root \
table user_info \
columns id,login_name \
where "id>=10 and id<=30" \
target-dir /test \
delete-target-dir \
fields-terminated-b '\t' \
num-mappers 2 \
split-by id

同步策略

全量同步策略

增量同步策略

新增及变化策略

特殊策略

某些特殊的表,可不必遵循上述同步策略。例如某些不会发生变化的表(地区表,省份表,民族表)可以只存一份固定值。

业务数据导入HDFS

分析表同步策略

在生产环境,个别小公司,为了简单处理,所有表全量导入。

中大型公司,由于数据量比较大,还是严格按照同步策略导入数据。

业务数据首日同步脚本

1)编写脚本

(1)在/home/admin/bin目录下创建

vim mysql_to_hdfs_init.sh

脚本内容(注意修改数据库连接信息)

#! /bin/bash
​
APP=gmall
sqoop=/opt/module/sqoop/bin/sqoop
​
if [ -n "$2" ] ;thendo_date=$2
else echo "请传入日期参数"exit
fi
​
import_data(){
$sqoop import \
--connect jdbc:mysql://hadoop102:3306/$APP \
--username root \
--password root \
--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 "selectid, 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"
}
​
import_coupon_use(){import_data coupon_use "selectid,coupon_id,user_id,order_id,coupon_status,get_time,using_time,used_time,expire_timefrom coupon_use"
}
​
import_order_status_log(){import_data order_status_log "selectid,order_id,order_status,operate_timefrom order_status_log"
}
​
import_user_info(){import_data "user_info" "select id,login_name,nick_name,name,phone_num,email,user_level, birthday,gender,create_time,operate_timefrom user_info"
}
​
import_order_detail(){import_data order_detail "select id,order_id, sku_id,sku_name,order_price,sku_num, create_time,source_type,source_id,split_total_amount,split_activity_amount,split_coupon_amountfrom order_detail"
}
​
import_payment_info(){import_data "payment_info"  "select id,  out_trade_no, order_id, user_id, payment_type, trade_no, total_amount,  subject, payment_status,create_time,callback_time from payment_info"
}
​
import_comment_info(){import_data comment_info "selectid,user_id,sku_id,spu_id,order_id,appraise,create_timefrom comment_info"
}
​
import_order_refund_info(){import_data order_refund_info "selectid,user_id,order_id,sku_id,refund_type,refund_num,refund_amount,refund_reason_type,refund_status,create_timefrom order_refund_info"
}
​
import_sku_info(){import_data sku_info "select id,spu_id,price,sku_name,sku_desc,weight,tm_id,category3_id,is_sale,create_timefrom sku_info"
}
​
import_base_category1(){import_data "base_category1" "select id,name from base_category1"
}
​
import_base_category2(){import_data "base_category2" "selectid,name,category1_id from base_category2"
}
​
import_base_category3(){import_data "base_category3" "selectid,name,category2_idfrom base_category3"
}
​
import_base_province(){import_data base_province "selectid,name,region_id,area_code,iso_code,iso_3166_2from base_province"
}
​
import_base_region(){import_data base_region "selectid,region_namefrom base_region"
}
​
import_base_trademark(){import_data base_trademark "selectid,tm_namefrom base_trademark"
}
​
import_spu_info(){import_data spu_info "selectid,spu_name,category3_id,tm_idfrom spu_info"
}
​
import_favor_info(){import_data favor_info "selectid,user_id,sku_id,spu_id,is_cancel,create_time,cancel_timefrom favor_info"
}
​
import_cart_info(){import_data cart_info "selectid,user_id,sku_id,cart_price,sku_num,sku_name,create_time,operate_time,is_ordered,order_time,source_type,source_idfrom cart_info"
}
​
import_coupon_info(){import_data coupon_info "selectid,coupon_name,coupon_type,condition_amount,condition_num,activity_id,benefit_amount,benefit_discount,create_time,range_type,limit_num,taken_count,start_time,end_time,operate_time,expire_timefrom coupon_info"
}
​
import_activity_info(){import_data activity_info "selectid,activity_name,activity_type,start_time,end_time,create_timefrom activity_info"
}
​
import_activity_rule(){import_data activity_rule "selectid,activity_id,activity_type,condition_amount,condition_num,benefit_amount,benefit_discount,benefit_levelfrom activity_rule"
}
​
import_base_dic(){import_data base_dic "selectdic_code,dic_name,parent_code,create_time,operate_timefrom base_dic"
}
​
​
import_order_detail_activity(){import_data order_detail_activity "selectid,order_id,order_detail_id,activity_id,activity_rule_id,sku_id,create_timefrom order_detail_activity"
}
​
​
import_order_detail_coupon(){import_data order_detail_coupon "selectid,order_id,order_detail_id,coupon_id,coupon_use_id,sku_id,create_timefrom order_detail_coupon"
}
​
​
import_refund_payment(){import_data refund_payment "selectid,out_trade_no,order_id,sku_id,payment_type,trade_no,total_amount,subject,refund_status,create_time,callback_timefrom refund_payment"
​
}
​
import_sku_attr_value(){import_data sku_attr_value "selectid,attr_id,value_id,sku_id,attr_name,value_namefrom sku_attr_value"
}
​
​
import_sku_sale_attr_value(){import_data sku_sale_attr_value "selectid,sku_id,spu_id,sale_attr_value_id,sale_attr_id,sale_attr_name,sale_attr_value_namefrom sku_sale_attr_value"
}
​
case $1 in"order_info")import_order_info
;;"base_category1")import_base_category1
;;"base_category2")import_base_category2
;;"base_category3")import_base_category3
;;"order_detail")import_order_detail
;;"sku_info")import_sku_info
;;"user_info")import_user_info
;;"payment_info")import_payment_info
;;"base_province")import_base_province
;;"base_region")import_base_region
;;"base_trademark")import_base_trademark
;;"activity_info")import_activity_info
;;"cart_info")import_cart_info
;;"comment_info")import_comment_info
;;"coupon_info")import_coupon_info
;;"coupon_use")import_coupon_use
;;"favor_info")import_favor_info
;;"order_refund_info")import_order_refund_info
;;"order_status_log")import_order_status_log
;;"spu_info")import_spu_info
;;"activity_rule")import_activity_rule
;;"base_dic")import_base_dic
;;"order_detail_activity")import_order_detail_activity
;;"order_detail_coupon")import_order_detail_coupon
;;"refund_payment")import_refund_payment
;;"sku_attr_value")import_sku_attr_value
;;"sku_sale_attr_value")import_sku_sale_attr_value
;;"all")import_base_category1import_base_category2import_base_category3import_order_infoimport_order_detailimport_sku_infoimport_user_infoimport_payment_infoimport_base_regionimport_base_provinceimport_base_trademarkimport_activity_infoimport_cart_infoimport_comment_infoimport_coupon_useimport_coupon_infoimport_favor_infoimport_order_refund_infoimport_order_status_logimport_spu_infoimport_activity_ruleimport_base_dicimport_order_detail_activityimport_order_detail_couponimport_refund_paymentimport_sku_attr_valueimport_sku_sale_attr_value
;;
esac
​

(2)添加权限 使用脚本

chmod +x mysql_to_hdfs_init.sh
mysql_to_hdfs_init.sh all 2020-06-14

业务数据每日同步脚本

1)脚本编写

vim mysql_to_hdfs.sh

脚本内容

#! /bin/bash
​
APP=gmall
sqoop=/opt/module/sqoop/bin/sqoop
​
if [ -n "$2" ] ;thendo_date=$2
elsedo_date=`date -d '-1 day' +%F`
fi
​
import_data(){
$sqoop import \
--connect jdbc:mysql://hadoop102:3306/$APP \
--username root \
--password root \
--target-dir /origin_data/$APP/db/$1/$do_date \
--delete-target-dir \
--query "$2 and  \$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 "selectid, 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_infowhere (date_format(create_time,'%Y-%m-%d')='$do_date' or date_format(operate_time,'%Y-%m-%d')='$do_date')"
}
​
import_coupon_use(){import_data coupon_use "selectid,coupon_id,user_id,order_id,coupon_status,get_time,using_time,used_time,expire_timefrom coupon_usewhere (date_format(get_time,'%Y-%m-%d')='$do_date'or date_format(using_time,'%Y-%m-%d')='$do_date'or date_format(used_time,'%Y-%m-%d')='$do_date'or date_format(expire_time,'%Y-%m-%d')='$do_date')"
}
​
import_order_status_log(){import_data order_status_log "selectid,order_id,order_status,operate_timefrom order_status_logwhere date_format(operate_time,'%Y-%m-%d')='$do_date'"
}
​
import_user_info(){import_data "user_info" "select id,login_name,nick_name,name,phone_num,email,user_level, birthday,gender,create_time,operate_timefrom user_info where (DATE_FORMAT(create_time,'%Y-%m-%d')='$do_date' or DATE_FORMAT(operate_time,'%Y-%m-%d')='$do_date')"
}
​
import_order_detail(){import_data order_detail "select id,order_id, sku_id,sku_name,order_price,sku_num, create_time,source_type,source_id,split_total_amount,split_activity_amount,split_coupon_amountfrom order_detail where DATE_FORMAT(create_time,'%Y-%m-%d')='$do_date'"
}
​
import_payment_info(){import_data "payment_info"  "select id,  out_trade_no, order_id, user_id, payment_type, trade_no, total_amount,  subject, payment_status,create_time,callback_time from payment_info where (DATE_FORMAT(create_time,'%Y-%m-%d')='$do_date' or DATE_FORMAT(callback_time,'%Y-%m-%d')='$do_date')"
}
​
import_comment_info(){import_data comment_info "selectid,user_id,sku_id,spu_id,order_id,appraise,create_timefrom comment_infowhere date_format(create_time,'%Y-%m-%d')='$do_date'"
}
​
import_order_refund_info(){import_data order_refund_info "selectid,user_id,order_id,sku_id,refund_type,refund_num,refund_amount,refund_reason_type,refund_status,create_timefrom order_refund_infowhere date_format(create_time,'%Y-%m-%d')='$do_date'"
}
​
import_sku_info(){import_data sku_info "select id,spu_id,price,sku_name,sku_desc,weight,tm_id,category3_id,is_sale,create_timefrom sku_info where 1=1"
}
​
import_base_category1(){import_data "base_category1" "select id,name from base_category1 where 1=1"
}
​
import_base_category2(){import_data "base_category2" "selectid,name,category1_id from base_category2 where 1=1"
}
​
import_base_category3(){import_data "base_category3" "selectid,name,category2_idfrom base_category3 where 1=1"
}
​
import_base_province(){import_data base_province "selectid,name,region_id,area_code,iso_code,iso_3166_2from base_provincewhere 1=1"
}
​
import_base_region(){import_data base_region "selectid,region_namefrom base_regionwhere 1=1"
}
​
import_base_trademark(){import_data base_trademark "selectid,tm_namefrom base_trademarkwhere 1=1"
}
​
import_spu_info(){import_data spu_info "selectid,spu_name,category3_id,tm_idfrom spu_infowhere 1=1"
}
​
import_favor_info(){import_data favor_info "selectid,user_id,sku_id,spu_id,is_cancel,create_time,cancel_timefrom favor_infowhere 1=1"
}
​
import_cart_info(){import_data cart_info "selectid,user_id,sku_id,cart_price,sku_num,sku_name,create_time,operate_time,is_ordered,order_time,source_type,source_idfrom cart_infowhere 1=1"
}
​
import_coupon_info(){import_data coupon_info "selectid,coupon_name,coupon_type,condition_amount,condition_num,activity_id,benefit_amount,benefit_discount,create_time,range_type,limit_num,taken_count,start_time,end_time,operate_time,expire_timefrom coupon_infowhere 1=1"
}
​
import_activity_info(){import_data activity_info "selectid,activity_name,activity_type,start_time,end_time,create_timefrom activity_infowhere 1=1"
}
​
import_activity_rule(){import_data activity_rule "selectid,activity_id,activity_type,condition_amount,condition_num,benefit_amount,benefit_discount,benefit_levelfrom activity_rulewhere 1=1"
}
​
import_base_dic(){import_data base_dic "selectdic_code,dic_name,parent_code,create_time,operate_timefrom base_dicwhere 1=1"
}
​
​
import_order_detail_activity(){import_data order_detail_activity "selectid,order_id,order_detail_id,activity_id,activity_rule_id,sku_id,create_timefrom order_detail_activitywhere date_format(create_time,'%Y-%m-%d')='$do_date'"
}
​
​
import_order_detail_coupon(){import_data order_detail_coupon "selectid,order_id,order_detail_id,coupon_id,coupon_use_id,sku_id,create_timefrom order_detail_couponwhere date_format(create_time,'%Y-%m-%d')='$do_date'"
}
​
​
import_refund_payment(){import_data refund_payment "selectid,out_trade_no,order_id,sku_id,payment_type,trade_no,total_amount,subject,refund_status,create_time,callback_timefrom refund_paymentwhere (DATE_FORMAT(create_time,'%Y-%m-%d')='$do_date' or DATE_FORMAT(callback_time,'%Y-%m-%d')='$do_date')"
​
}
​
import_sku_attr_value(){import_data sku_attr_value "selectid,attr_id,value_id,sku_id,attr_name,value_namefrom sku_attr_valuewhere 1=1"
}
​
​
import_sku_sale_attr_value(){import_data sku_sale_attr_value "selectid,sku_id,spu_id,sale_attr_value_id,sale_attr_id,sale_attr_name,sale_attr_value_namefrom sku_sale_attr_valuewhere 1=1"
}
​
case $1 in"order_info")import_order_info
;;"base_category1")import_base_category1
;;"base_category2")import_base_category2
;;"base_category3")import_base_category3
;;"order_detail")import_order_detail
;;"sku_info")import_sku_info
;;"user_info")import_user_info
;;"payment_info")import_payment_info
;;"base_province")import_base_province
;;"activity_info")import_activity_info
;;"cart_info")import_cart_info
;;"comment_info")import_comment_info
;;"coupon_info")import_coupon_info
;;"coupon_use")import_coupon_use
;;"favor_info")import_favor_info
;;"order_refund_info")import_order_refund_info
;;"order_status_log")import_order_status_log
;;"spu_info")import_spu_info
;;"activity_rule")import_activity_rule
;;"base_dic")import_base_dic
;;"order_detail_activity")import_order_detail_activity
;;"order_detail_coupon")import_order_detail_coupon
;;"refund_payment")import_refund_payment
;;"sku_attr_value")import_sku_attr_value
;;"sku_sale_attr_value")import_sku_sale_attr_value
;;
"all")import_base_category1import_base_category2import_base_category3import_order_infoimport_order_detailimport_sku_infoimport_user_infoimport_payment_infoimport_base_trademarkimport_activity_infoimport_cart_infoimport_comment_infoimport_coupon_useimport_coupon_infoimport_favor_infoimport_order_refund_infoimport_order_status_logimport_spu_infoimport_activity_ruleimport_base_dicimport_order_detail_activityimport_order_detail_couponimport_refund_paymentimport_sku_attr_valueimport_sku_sale_attr_value
;;
esac

2)增加脚本权限 使用脚本

chmod +x mysql_to_hdfs.sh
mysql_to_hdfs.sh all 2020-06-15

第三章 数据库环境准备

Hive安装部署

(1)解压 重命名

tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/
cd /opt/module
mv apache-hive-3.1.2-bin.tar.gz hive

(2)修改/etc/profile.d/my_enc.sh 添加环境变量

sudo vim /etc/profile.d/my_enc.sh
添加内容
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin

source一下my_env.sh文件,使环境变量生效

(3)解决日志jar包冲突,进入/opt/module/hive/lib目录

mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak

Hive元数据拷贝到MySql

拷贝驱动

将mysql的jdbc驱动拷贝到hive的lib目录下

cp /opt/software/mysql-connector-java-5.1.27.jar /opt/module/hive/lib/

配置Metastore到Mysql

(1)在/opt/module/hive/conf目录下创建hive-site.xml文件

(2)添加如下内容

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value></property>
​<property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property>
​<property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property>
​<property><name>javax.jdo.option.ConnectionPassword</name><value>root</value></property>
​<property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property>
​<property><name>hive.metastore.schema.verification</name><value>false</value></property>
​<property><name>hive.server2.thrift.port</name><value>10000</value></property>
​<property><name>hive.server2.thrift.bind.host</name><value>hadoop102</value></property>
​<property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property><property><name>hive.cli.print.header</name><value>true</value></property>
​<property><name>hive.cli.print.current.db</name><value>true</value></property>
</configuration>
​

启动hive

初始化元数据库

登录mysql
mysql -uroot -proot
新建hive元数据库
create database metastore;
quit
初始化hive元数据库
schematool -initSchema -dbType mysql -verbose

启动Hive客户端

启动Hive客户端
bin/hive
查看数据库
show databases;

数仓(二)—业务数据采集平台相关推荐

  1. 离线数仓03——业务数据采集平台

    文章目录 第1章 电商业务简介 1.1 电商业务流程 1.2 电商常识 1.2.1 SKU和SPU 1.2.2 平台属性和销售属性 第2章 业务数据介绍 2.1 电商系统表结构 2.1 MySQL安装 ...

  2. 2、电商数仓(业务数据采集平台)

    电商业务简介 电商业务流程 电商的业务流程可以以一个普通用户的浏览足迹为例进行说明,用户点开电商首页开始浏览,可能会通过分类查询也可能通过全文搜索寻找自己中意的商品,这些商品无疑都是存储在后台的管理系 ...

  3. 数据仓库之电商数仓-- 2、业务数据采集平台

    目录 一.电商业务简介 1.1 电商业务流程 1.2 电商常识(SKU.SPU) 1.3 电商系统表结构 1.3.1 活动信息表(activity_info) 1.3.2 活动规则表(activity ...

  4. 爱奇艺数据中台建设组合拳:日志投递、统一数仓、大数据平台

    本文根据马金韬老师在[deeplus直播第233期]线上分享演讲内容整理而成.首发于DBAplus社群,经授权转载(文末有获取本期PPT&回放的方式,不要错过) 马金韬 爱奇艺数据中台负责人 ...

  5. 4. 业务数据采集平台搭建

    4. 业务数据采集平台搭建 业务数据采集模块 Hive安装部署 业务数据同步概述 数据同步策略概述 数据同步策略选择 数据同步工具概述 DataX 数据同步工具 Maxwell 数据同步工具 全量表数 ...

  6. 3. 业务数据采集平台概述

    3. 业务数据采集平台概述 电商业务简介 电商业务流程 电商常识 SKU和SPU 平台属性和销售属性 电商业务数据 电商系统表结构 活动信息表(activity_info) 活动规则表(activit ...

  7. 数仓项目——在线教育平台离线数据仓库效果展示

    背景:基于阿里云的3台ECS云服务器搭建了在线教育平台的离线数据仓库,本文仅用于记录最终的效果,从0到1的实现过程后续进行补充,由于抢占式实例的云服务器按量进行每小时计费,为了避免持续的收费,所以我急 ...

  8. 数仓4.0(二)------ 业务数据采集平台

    目录 一:电商业务简介 1.1 电商业务流程 1.2 电商常识 二:业务数据采集模块 2.1 安装MySQL及配置 2.2 业务数据生成 2.2.1 连接Mysql以及建表 2.2.2 生成业务数据 ...

  9. 二、业务数据采集平台

    第1章 电商业务简介 1.1 电商业务流程 电商的业务流程可以以一个普通用户的浏览足迹为例进行说明,用户点开电商首页开始浏览,可能会通过分类查询也可能通过全文搜索寻找自己中意的商品,这些商品无疑都是存 ...

最新文章

  1. 多重影分身:一套代码如何生成多个小程序?
  2. 辞去美国终身教职回国的帅教授,拟增列为顶尖985大学博导
  3. echarts画布_vue中动态设置echarts画布大小
  4. Apache 各启动方式的差别
  5. 【C++ Primer | 08】课后习题答案
  6. MyEclipse中Maven Web项目部署路径设置
  7. Springboot2.0访问Redis集群
  8. 暴风集团冯鑫被批捕:涉嫌对非国家工作人员行贿罪、职务侵占罪
  9. poj 1260 动态规划
  10. python教程-Python入门教程完整版(懂中文就能学会)
  11. 百度VS谷歌:优秀与伟大之别
  12. 使用localhost调试本地代码,setcookie无效
  13. sonar jacoco 覆盖率为0_接口测试代码覆盖率(jacoco)方案分享
  14. 重温LuGre摩擦力模型
  15. 微型计算机三部分基本组成,微型计算机的基本组成-电脑自学网
  16. SpreadJS 纯前端表格控件应用案例:立信智能审计云平台(SACP)
  17. 网站防CC攻击软件防火墙和WEB防火墙大比较
  18. SQL链接EXCEL文件
  19. 武汉第一职业教育中心计算机技能高考,武汉市第一职业教育中心2019年招生简章...
  20. 计算机教师师徒结对协议,学期信息技术师徒结对总结

热门文章

  1. 阿里云mysql数据备份恢复数据到本地mysql(备份+binlog)
  2. oracle删除表数据的两种的方式
  3. Zookeeper 笔记
  4. 速看,微信这些功能你知道吗?
  5. android aidl空指针,AIDL使用笔记
  6. 博客园的推荐150名大牛的地址
  7. mysql简单命令—常用
  8. viper4android 625CPU,安装V4A,选择哪个cpu平台
  9. 群雄逐鹿,谁能赢得自动驾驶之战?
  10. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java果蔬信息网站25890