大数据基础设施搭建 - 数据装载

文章目录

  • 一、概述
  • 二、数据装载(HDFS -> Hive)
    • 2.1 创建Hive表
      • 2.1.1 业务全量表建表语句
      • 2.1.2 业务增量表建表语句
      • 2.1.3 流量增量表建表语句
    • 2.2 数据装载
      • 2.2.1 初始化装载省份和地区表
      • 2.2.2 每日装载业务数据
        • (1) 开发脚本
        • (2) 授予脚本执行权限
        • (3) 定时调度
      • 2.2.3 每日装载日志数据
        • (1) 开发脚本
        • (2) 授予脚本执行权限
        • (3) 定时调度

一、概述

入仓时机:业务数据、日志数据都同步到HDFS后。即Sqoop同步业务全量表完成后。
业务数据进入HDFS时机:全量数据每天凌晨将昨天的数据同步到HDFS昨天目录。增量数据实时同步到HDFS到binlog对应的日期目录。
日志数据进入HDFS时机:实时同步到日志行为发生的日期,JSON串中的ts字段解析出来的日期。

二、数据装载(HDFS -> Hive)

2.1 创建Hive表

共28张表:16张业务全量表、11张业务增量表、1张流量增量表。
注意1:Hive表默认是TextFile格式。
注意2:省份表和地区表为非分区表。

2.1.1 业务全量表建表语句

DROP TABLE IF EXISTS ods_sku_info_full;
CREATE EXTERNAL TABLE ods_sku_info_full(`id` STRING COMMENT 'skuId',`spu_id` STRING COMMENT 'spuid',`price` DECIMAL(16,2) COMMENT '价格',`sku_name` STRING COMMENT '商品名称',`sku_desc` STRING COMMENT '商品描述',`weight` DECIMAL(16,2) COMMENT '重量',`tm_id` STRING COMMENT '品牌id',`category3_id` STRING COMMENT '品类id',`is_sale` STRING COMMENT '是否在售',`create_time` STRING COMMENT '创建时间'
) COMMENT 'SKU商品表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_sku_info_full/';DROP TABLE IF EXISTS ods_base_category1_full;
CREATE EXTERNAL TABLE ods_base_category1_full(`id` STRING COMMENT 'id',`name` STRING COMMENT '名称'
) COMMENT '商品一级分类表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_base_category1_full/';DROP TABLE IF EXISTS ods_base_category2_full;
CREATE EXTERNAL TABLE ods_base_category2_full(`id` STRING COMMENT ' id',`name` STRING COMMENT '名称',`category1_id` STRING COMMENT '一级品类id'
) COMMENT '商品二级分类表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_base_category2_full/';DROP TABLE IF EXISTS ods_base_category3_full;
CREATE EXTERNAL TABLE ods_base_category3_full(`id` STRING COMMENT ' id',`name` STRING COMMENT '名称',`category2_id` STRING COMMENT '二级品类id'
) COMMENT '商品三级分类表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_base_category3_full/';DROP TABLE IF EXISTS ods_base_province;
CREATE EXTERNAL TABLE ods_base_province (`id` STRING COMMENT '编号',`name` STRING COMMENT '省份名称',`region_id` STRING COMMENT '地区ID',`area_code` STRING COMMENT '地区编码',`iso_code` STRING COMMENT 'ISO-3166编码,供可视化使用',`iso_3166_2` STRING COMMENT 'IOS-3166-2编码,供可视化使用'
)  COMMENT '省份表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_base_province/';DROP TABLE IF EXISTS ods_base_trademark_full;
CREATE EXTERNAL TABLE ods_base_trademark_full (`id` STRING COMMENT '编号',`tm_name` STRING COMMENT '品牌名称'
)  COMMENT '品牌表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_base_trademark_full/';DROP TABLE IF EXISTS ods_spu_info_full;
CREATE EXTERNAL TABLE ods_spu_info_full(`id` STRING COMMENT 'spuid',`spu_name` STRING COMMENT 'spu名称',`category3_id` STRING COMMENT '品类id',`tm_id` STRING COMMENT '品牌id'
) COMMENT 'SPU商品表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_spu_info_full/';DROP TABLE IF EXISTS ods_favor_info_full;
CREATE EXTERNAL TABLE ods_favor_info_full(`id` STRING COMMENT '编号',`user_id` STRING COMMENT '用户id',`sku_id` STRING COMMENT 'skuid',`spu_id` STRING COMMENT 'spuid',`is_cancel` STRING COMMENT '是否取消',`create_time` STRING COMMENT '收藏时间',`cancel_time` STRING COMMENT '取消时间'
) COMMENT '商品收藏表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_favor_info_full/';DROP TABLE IF EXISTS ods_cart_info_full;
CREATE EXTERNAL TABLE ods_cart_info_full(`id` STRING COMMENT '编号',`user_id` STRING COMMENT '用户id',`sku_id` STRING COMMENT 'skuid',`cart_price` DECIMAL(16,2)  COMMENT '放入购物车时价格',`sku_num` BIGINT COMMENT '数量',`sku_name` STRING COMMENT 'sku名称 (冗余)',`create_time` STRING COMMENT '创建时间',`operate_time` STRING COMMENT '修改时间',`is_ordered` STRING COMMENT '是否已经下单',`order_time` STRING COMMENT '下单时间',`source_type` STRING COMMENT '来源类型',`source_id` STRING COMMENT '来源编号'
) COMMENT '加购表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_cart_info_full/';DROP TABLE IF EXISTS ods_coupon_info_full;
CREATE EXTERNAL TABLE ods_coupon_info_full(`id` STRING COMMENT '购物券编号',`coupon_name` STRING COMMENT '购物券名称',`coupon_type` STRING COMMENT '购物券类型 1 现金券 2 折扣券 3 满减券 4 满件打折券',`condition_amount` DECIMAL(16,2) COMMENT '满额数',`condition_num` BIGINT COMMENT '满件数',`activity_id` STRING COMMENT '活动编号',`benefit_amount` DECIMAL(16,2) COMMENT '减金额',`benefit_discount` DECIMAL(16,2) COMMENT '折扣',`create_time` STRING COMMENT '创建时间',`range_type` STRING COMMENT '范围类型 1、商品 2、品类 3、品牌',`limit_num` BIGINT COMMENT '最多领用次数',`taken_count` BIGINT COMMENT '已领用次数',`start_time` STRING COMMENT '开始领取时间',`end_time` STRING COMMENT '结束领取时间',`operate_time` STRING COMMENT '修改时间',`expire_time` STRING COMMENT '过期时间'
) COMMENT '优惠券表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_coupon_info_full/';DROP TABLE IF EXISTS ods_activity_info_full;
CREATE EXTERNAL TABLE ods_activity_info_full(`id` STRING COMMENT '编号',`activity_name` STRING  COMMENT '活动名称',`activity_type` STRING  COMMENT '活动类型',`start_time` STRING  COMMENT '开始时间',`end_time` STRING  COMMENT '结束时间',`create_time` STRING  COMMENT '创建时间'
) COMMENT '活动信息表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_activity_info_full/';DROP TABLE IF EXISTS ods_activity_rule_full;
CREATE EXTERNAL TABLE ods_activity_rule_full(`id` STRING COMMENT '编号',`activity_id` STRING  COMMENT '活动ID',`activity_type` STRING COMMENT '活动类型',`condition_amount` DECIMAL(16,2) COMMENT '满减金额',`condition_num` BIGINT COMMENT '满减件数',`benefit_amount` DECIMAL(16,2) COMMENT '优惠金额',`benefit_discount` DECIMAL(16,2) COMMENT '优惠折扣',`benefit_level` STRING COMMENT '优惠级别'
) COMMENT '活动规则表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_activity_rule_full/';DROP TABLE IF EXISTS ods_base_dic_full;
CREATE EXTERNAL TABLE ods_base_dic_full(`dic_code` STRING COMMENT '编号',`dic_name` STRING COMMENT '编码名称',`parent_code` STRING COMMENT '父编码',`create_time` STRING COMMENT '创建日期',`operate_time` STRING COMMENT '操作日期'
) COMMENT '编码字典表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_base_dic_full/';DROP TABLE IF EXISTS ods_sku_attr_value_full;
CREATE EXTERNAL TABLE ods_sku_attr_value_full(`id` STRING COMMENT '编号',`attr_id` STRING COMMENT '平台属性ID',`value_id` STRING COMMENT '平台属性值ID',`sku_id` STRING COMMENT '商品ID',`attr_name` STRING COMMENT '平台属性名称',`value_name` STRING COMMENT '平台属性值名称'
) COMMENT 'sku平台属性表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_sku_attr_value_full/';DROP TABLE IF EXISTS ods_sku_sale_attr_value_full;
CREATE EXTERNAL TABLE ods_sku_sale_attr_value_full(`id` STRING COMMENT '编号',`sku_id` STRING COMMENT 'sku_id',`spu_id` STRING COMMENT 'spu_id',`sale_attr_value_id` STRING COMMENT '销售属性值id',`sale_attr_id` STRING COMMENT '销售属性id',`sale_attr_name` STRING COMMENT '销售属性名称',`sale_attr_value_name` STRING COMMENT '销售属性值名称'
) COMMENT 'sku销售属性名称'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_sku_sale_attr_value_full/';DROP TABLE IF EXISTS ods_base_region;
CREATE EXTERNAL TABLE ods_base_region (`id` STRING COMMENT '编号',`region_name` STRING COMMENT '地区名称'
)  COMMENT '地区表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_base_region/';

2.1.2 业务增量表建表语句

DROP TABLE IF EXISTS ods_order_info_inc;
CREATE EXTERNAL TABLE ods_order_info_inc (`id` STRING COMMENT '订单号',`final_amount` DECIMAL(16,2) COMMENT '订单最终金额',`order_status` STRING COMMENT '订单状态',`user_id` STRING COMMENT '用户id',`payment_way` STRING COMMENT '支付方式',`delivery_address` STRING COMMENT '送货地址',`out_trade_no` STRING COMMENT '支付流水号',`create_time` STRING COMMENT '创建时间',`operate_time` STRING COMMENT '操作时间',`expire_time` STRING COMMENT '过期时间',`tracking_no` STRING COMMENT '物流单编号',`province_id` STRING COMMENT '省份ID',`activity_reduce_amount` DECIMAL(16,2) COMMENT '活动减免金额',`coupon_reduce_amount` DECIMAL(16,2) COMMENT '优惠券减免金额',`original_amount` DECIMAL(16,2)  COMMENT '订单原价金额',`feight_fee` DECIMAL(16,2)  COMMENT '运费',`feight_fee_reduce` DECIMAL(16,2)  COMMENT '运费减免'
) COMMENT '订单表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_order_info_inc/';DROP TABLE IF EXISTS ods_coupon_use_inc;
CREATE EXTERNAL TABLE ods_coupon_use_inc(`id` STRING COMMENT '编号',`coupon_id` STRING  COMMENT '优惠券ID',`user_id` STRING  COMMENT 'skuid',`order_id` STRING  COMMENT 'spuid',`coupon_status` STRING  COMMENT '优惠券状态',`get_time` STRING  COMMENT '领取时间',`using_time` STRING  COMMENT '使用时间(下单)',`used_time` STRING  COMMENT '使用时间(支付)',`expire_time` STRING COMMENT '过期时间'
) COMMENT '优惠券领用表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_coupon_use_inc/';DROP TABLE IF EXISTS ods_order_status_log_inc;
CREATE EXTERNAL TABLE ods_order_status_log_inc (`id` STRING COMMENT '编号',`order_id` STRING COMMENT '订单ID',`order_status` STRING COMMENT '订单状态',`operate_time` STRING COMMENT '修改时间'
)  COMMENT '订单状态表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_order_status_log_inc/';DROP TABLE IF EXISTS ods_user_info_inc;
CREATE EXTERNAL TABLE ods_user_info_inc(`id` STRING COMMENT '用户id',`login_name` STRING COMMENT '用户名称',`nick_name` STRING COMMENT '用户昵称',`name` STRING COMMENT '用户姓名',`phone_num` STRING COMMENT '手机号码',`email` STRING COMMENT '邮箱',`user_level` STRING COMMENT '用户等级',`birthday` STRING COMMENT '生日',`gender` STRING COMMENT '性别',`create_time` STRING COMMENT '创建时间',`operate_time` STRING COMMENT '操作时间'
) COMMENT '用户表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_user_info_inc/';DROP TABLE IF EXISTS ods_order_detail_inc;
CREATE EXTERNAL TABLE ods_order_detail_inc(`id` STRING COMMENT '编号',`order_id` STRING  COMMENT '订单号',`sku_id` STRING COMMENT '商品id',`sku_name` STRING COMMENT '商品名称',`order_price` DECIMAL(16,2) COMMENT '商品价格',`sku_num` BIGINT COMMENT '商品数量',`create_time` STRING COMMENT '创建时间',`source_type` STRING COMMENT '来源类型',`source_id` STRING COMMENT '来源编号',`split_final_amount` DECIMAL(16,2) COMMENT '分摊最终金额',`split_activity_amount` DECIMAL(16,2) COMMENT '分摊活动优惠',`split_coupon_amount` DECIMAL(16,2) COMMENT '分摊优惠券优惠'
) COMMENT '订单详情表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_order_detail_inc/';DROP TABLE IF EXISTS ods_payment_info_inc;
CREATE EXTERNAL TABLE ods_payment_info_inc(`id` STRING COMMENT '编号',`out_trade_no` STRING COMMENT '对外业务编号',`order_id` STRING COMMENT '订单编号',`user_id` STRING COMMENT '用户编号',`payment_type` STRING COMMENT '支付类型',`trade_no` STRING COMMENT '交易编号',`payment_amount` DECIMAL(16,2) COMMENT '支付金额',`subject` STRING COMMENT '交易内容',`payment_status` STRING COMMENT '支付状态',`create_time` STRING COMMENT '创建时间',`callback_time` STRING COMMENT '回调时间'
)  COMMENT '支付流水表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_payment_info_inc/';DROP TABLE IF EXISTS ods_comment_info_inc;
CREATE EXTERNAL TABLE ods_comment_info_inc(`id` STRING COMMENT '编号',`user_id` STRING COMMENT '用户ID',`sku_id` STRING COMMENT '商品sku',`spu_id` STRING COMMENT '商品spu',`order_id` STRING COMMENT '订单ID',`appraise` STRING COMMENT '评价',`create_time` STRING COMMENT '评价时间'
) COMMENT '商品评论表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_comment_info_inc/';DROP TABLE IF EXISTS ods_order_refund_info_inc;
CREATE EXTERNAL TABLE ods_order_refund_info_inc(`id` STRING COMMENT '编号',`user_id` STRING COMMENT '用户ID',`order_id` STRING COMMENT '订单ID',`sku_id` STRING COMMENT '商品ID',`refund_type` STRING COMMENT '退单类型',`refund_num` BIGINT COMMENT '退单件数',`refund_amount` DECIMAL(16,2) COMMENT '退单金额',`refund_reason_type` STRING COMMENT '退单原因类型',`refund_status` STRING COMMENT '退单状态',--退单状态应包含买家申请、卖家审核、卖家收货、退款完成等状态。此处未涉及到,故该表按增量处理`create_time` STRING COMMENT '退单时间'
) COMMENT '退单表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_order_refund_info_inc/';DROP TABLE IF EXISTS ods_order_detail_activity_inc;
CREATE EXTERNAL TABLE ods_order_detail_activity_inc(`id` STRING COMMENT '编号',`order_id` STRING  COMMENT '订单号',`order_detail_id` STRING COMMENT '订单明细id',`activity_id` STRING COMMENT '活动id',`activity_rule_id` STRING COMMENT '活动规则id',`sku_id` BIGINT COMMENT '商品id',`create_time` STRING COMMENT '创建时间'
) COMMENT '订单详情活动关联表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_order_detail_activity_inc/';DROP TABLE IF EXISTS ods_order_detail_coupon_inc;
CREATE EXTERNAL TABLE ods_order_detail_coupon_inc(`id` STRING COMMENT '编号',`order_id` STRING  COMMENT '订单号',`order_detail_id` STRING COMMENT '订单明细id',`coupon_id` STRING COMMENT '优惠券id',`coupon_use_id` STRING COMMENT '优惠券领用记录id',`sku_id` STRING COMMENT '商品id',`create_time` STRING COMMENT '创建时间'
) COMMENT '订单详情活动关联表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_order_detail_coupon_inc/';DROP TABLE IF EXISTS ods_refund_payment_inc;
CREATE EXTERNAL TABLE ods_refund_payment_inc(`id` STRING COMMENT '编号',`out_trade_no` STRING COMMENT '对外业务编号',`order_id` STRING COMMENT '订单编号',`sku_id` STRING COMMENT 'SKU编号',`payment_type` STRING COMMENT '支付类型',`trade_no` STRING COMMENT '交易编号',`refund_amount` DECIMAL(16,2) COMMENT '支付金额',`subject` STRING COMMENT '交易内容',`refund_status` STRING COMMENT '支付状态',`create_time` STRING COMMENT '创建时间',`callback_time` STRING COMMENT '回调时间'
)  COMMENT '支付流水表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/warehouse/dw_ods.db/ods_refund_payment_inc/';

2.1.3 流量增量表建表语句

DROP TABLE IF EXISTS ods_log_inc;
CREATE EXTERNAL TABLE ods_log_inc (`line` string)
PARTITIONED BY (`dt` string)
LOCATION '/warehouse/dw_ods.db/ods_log_inc/';

2.2 数据装载

省份表和城市表只需首次导入一次,其他业务表需要每天都装载。

2.2.1 初始化装载省份和地区表

[hadoop@hadoop102 ~]$ hive -e "load data inpath '/warehouse/db/gmall/base_province_full/2023-12-02' OVERWRITE into table dw_ods.ods_base_province;"
[hadoop@hadoop102 ~]$ hive -e "load data inpath '/warehouse/db/gmall/base_region_full/2023-12-02' OVERWRITE into table dw_ods.ods_base_region;"

2.2.2 每日装载业务数据

注意1:要在Sqoop数据同步成功之后运行。
注意2:crontab无法直接处理任务依赖关系!
TODO:如何判定Sqoop同步成功???? 如何在其成功后运行???

(1) 开发脚本
[hadoop@hadoop102 ~]$ cd /home/hadoop/bin/
[hadoop@hadoop102 bin]$ vim hdfs_to_ods_db.sh

脚本内容:

#!/bin/bashAPP=dw_ods# 如果是输入的日期按照取输入日期;如果没输入日期取当前时间的前一天
if [ -n "$2" ] ;thendo_date=$2
else do_date=`date -d "-1 day" +%F`
fisku_info=" 
load data inpath '/warehouse/db/gmall/sku_info_full/$do_date' OVERWRITE into table ${APP}.ods_sku_info_full partition(dt='$do_date');"base_category1="
load data inpath '/warehouse/db/gmall/base_category1_full/$do_date' OVERWRITE into table ${APP}.ods_base_category1_full partition(dt='$do_date');"base_category2="
load data inpath '/warehouse/db/gmall/base_category2_full/$do_date' OVERWRITE into table ${APP}.ods_base_category2_full partition(dt='$do_date');"base_category3="
load data inpath '/warehouse/db/gmall/base_category3_full/$do_date' OVERWRITE into table ${APP}.ods_base_category3_full partition(dt='$do_date');"base_trademark="
load data inpath '/warehouse/db/gmall/base_trademark_full/$do_date' OVERWRITE into table ${APP}.ods_base_trademark_full partition(dt='$do_date');"spu_info="
load data inpath '/warehouse/db/gmall/spu_info_full/$do_date' OVERWRITE into table ${APP}.ods_spu_info_full partition(dt='$do_date');"favor_info="
load data inpath '/warehouse/db/gmall/favor_info_full/$do_date' OVERWRITE into table ${APP}.ods_favor_info_full partition(dt='$do_date'); "cart_info="
load data inpath '/warehouse/db/gmall/cart_info_full/$do_date' OVERWRITE into table ${APP}.ods_cart_info_full partition(dt='$do_date'); "coupon_info="
load data inpath '/warehouse/db/gmall/coupon_info_full/$do_date' OVERWRITE into table ${APP}.ods_coupon_info_full partition(dt='$do_date'); "activity_info="
load data inpath '/warehouse/db/gmall/activity_info_full/$do_date' OVERWRITE into table ${APP}.activity_info_full partition(dt='$do_date'); "activity_rule="
load data inpath '/warehouse/db/gmall/activity_rule_full/$do_date' OVERWRITE into table ${APP}.ods_activity_rule_full partition(dt='$do_date'); "base_dic="
load data inpath '/warehouse/db/gmall/base_dic_full/$do_date' OVERWRITE into table ${APP}.ods_base_dic_full partition(dt='$do_date'); "sku_attr_value="
load data inpath '/warehouse/db/gmall/sku_attr_value_full/$do_date' OVERWRITE into table ${APP}.ods_sku_attr_value_full partition(dt='$do_date'); "sku_sale_attr_value="
load data inpath '/warehouse/db/gmall/sku_sale_attr_value_full/$do_date' OVERWRITE into table ${APP}.ods_sku_sale_attr_value_full partition(dt='$do_date'); "order_info="
load data inpath '/warehouse/db/gmall/order_info_inc/$do_date' OVERWRITE into table ${APP}.ods_order_info_inc partition(dt='$do_date'); "coupon_use="
load data inpath '/warehouse/db/gmall/coupon_use_inc/$do_date' OVERWRITE into table ${APP}.ods_coupon_use_inc partition(dt='$do_date'); "order_status_log="
load data inpath '/warehouse/db/gmall/order_status_log_inc/$do_date' OVERWRITE into table ${APP}.ods_order_status_log_inc partition(dt='$do_date');" user_info="
load data inpath '/warehouse/db/gmall/user_info_inc/$do_date' OVERWRITE into table ${APP}.ods_user_info_inc partition(dt='$do_date'); "order_detail="
load data inpath '/warehouse/db/gmall/order_detail_inc/$do_date' OVERWRITE into table ${APP}.ods_order_detail_inc partition(dt='$do_date'); "payment_info="
load data inpath '/warehouse/db/gmall/payment_info_inc/$do_date' OVERWRITE into table ${APP}.ods_payment_info_inc partition(dt='$do_date'); "comment_info="
load data inpath '/warehouse/db/gmall/comment_info_inc/$do_date' OVERWRITE into table ${APP}.ods_comment_info_inc partition(dt='$do_date'); "order_refund_info="
load data inpath '/warehouse/db/gmall/order_refund_info_inc/$do_date' OVERWRITE into table ${APP}.ods_order_refund_info_inc partition(dt='$do_date'); "order_detail_activity="
load data inpath '/warehouse/db/gmall/order_detail_activity_inc/$do_date' OVERWRITE into table ${APP}.ods_order_detail_activity_inc partition(dt='$do_date'); "order_detail_coupon=" 
load data inpath '/warehouse/db/gmall/order_detail_coupon_inc/$do_date' OVERWRITE into table ${APP}.ods_order_detail_coupon_inc partition(dt='$do_date');"refund_payment="
load data inpath '/warehouse/db/gmall/refund_payment_inc/$do_date' OVERWRITE into table ${APP}.ods_refund_payment_inc partition(dt='$do_date');"case $1 in"sku_info"){hive -e "$sku_info"};;"base_category1"){hive -e "$base_category1"};;"base_category2"){hive -e "$base_category2"};;"base_category3"){hive -e "$base_category3"};;"base_trademark"){hive -e "$base_trademark"};;"spu_info"){hive -e "$spu_info"};;"favor_info"){hive -e "$favor_info"};;"cart_info"){hive -e "$cart_info"};;"coupon_info"){hive -e "$coupon_info"};;"activity_info"){hive -e "$activity_info"};;"activity_rule"){hive -e "$activity_rule"};;"base_dic"){hive -e "$base_dic"};;"sku_attr_value"){hive -e "$sku_attr_value"};;"sku_sale_attr_value"){hive -e "$sku_sale_attr_value"};;"order_info"){hive -e "$order_info"};;"coupon_use"){hive -e "$coupon_use"};;"order_status_log"){hive -e "$order_status_log"};;"user_info"){hive -e "$user_info"};;"order_detail"){hive -e "$order_detail"};;"payment_info"){hive -e "$payment_info"};;"comment_info"){hive -e "$comment_info"};;"order_refund_info"){hive -e "$order_refund_info"};;"order_detail_activity"){hive -e "$order_detail_activity"};;"order_detail_coupon"){hive -e "$order_detail_coupon"};;"refund_payment"){hive -e "$refund_payment"};;"all"){hive -e "$sku_info$base_category1$base_category2$base_category3$base_trademark$spu_info$favor_info$cart_info$coupon_info$activity_info$activity_rule$base_dic$sku_attr_value$sku_sale_attr_value$order_info$coupon_use$order_status_log$user_info$order_detail$payment_info$comment_info$order_refund_info$order_detail_activity$order_detail_coupon$refund_payment"};;
esac
(2) 授予脚本执行权限
[hadoop@hadoop102 bin]$ chmod +x hdfs_to_ods_db.sh
(3) 定时调度

每天凌晨3点装载业务数据

[hadoop@hadoop102 ~]$ crontab -e

新增内容:

# 每天凌晨3点装载业务数据
0 3 * * * hdfs_to_ods_db.sh all

2.2.3 每日装载日志数据

(1) 开发脚本
[hadoop@hadoop102 ~]$ cd /home/hadoop/bin/
[hadoop@hadoop102 bin]$ vim hdfs_to_ods_log.sh

脚本内容:

#!/bin/bash# 如果是输入的日期按照取输入日期;如果没输入日期取当前时间的前一天
if [ -n "$1" ] ;thendo_date=$1
else do_date=`date -d "-1 day" +%F`
fi echo ================== 日志日期为 $do_date ==================
sql="
load data inpath '/warehouse/applog/gmall/tracking_log/$do_date' into table dw_ods.ods_log_inc partition(dt='$do_date');
"hive -e "$sql"
(2) 授予脚本执行权限
[hadoop@hadoop102 bin]$ chmod +x hdfs_to_ods_log.sh
(3) 定时调度

凌晨3点执行,要等昨天的日志数据同步完成。
关键是保证白天时数仓能查到昨天分区的数据。

[hadoop@hadoop102 ~]$ crontab -e

新增内容:

# 每天凌晨3点装载用户日志数据增量表
0 3 * * * hdfs_to_ods_log.sh

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

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

相关文章

【场景测试用例】登录

测试思路: UI 不同浏览器,不同系统的手机设备外观和布局保持一致用户友好性 错误提示搜索历史和自动补全回车失焦输入建议功能 验证登录功能 输入正确的用户名,密码/短信验证码可点击登录按钮必填项未输入,登录按钮置灰不可点击/…

Unity中Shader指令优化

文章目录 前言解析一下不同运算、条件、函数所需的指令数1、常数基本运算2、变量基本运算3、条件语句、循环 和 函数 前言 上一篇文章中,我们解析了Shader解析后的代码。我们在这篇文章中来看怎么实现Shader指令优化 Unity中Shader指令优化(编译后指令…

什么是事务?事务的特性是什么?

一、概念 事务是并发控制的单位,是用户定义的一个操作序列。 二、特性 事务具有四大特性:原子性、一致性、隔离性、持久性 原则性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。 一致性&a…

【深度学习实验】图像处理(四):PIL——自定义图像数据增强操作(图像合成;图像融合(高斯掩码))

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. PIL基础操作2~4. 随机遮挡、随机擦除、线性混合5. 图像合成5.1 原理5.2 实现5.3 效果展示 6. 图像融合6.1 原理6.2 实现6.3 效果展示 一、实验介绍 在深度学习任务中&#xff0c…

csapp-linklab

超详细csapp-linklab之第一阶段“输出学号”实验报告-CSDN博客 csapp-linklab之第二阶段“输出学号”实验报告-CSDN博客 csapp-linklab之第3阶段“输出学号”实验报告(强弱符号)-CSDN博客 csapp-linklab之第4阶段“输出学号”实验报告(swi…

wordpress主题的后台Settings API 和 Theme Customizer API开发部分

先看两个概念Settings API和Theme Customizer API Settings API和Theme Customizer API是WordPress提供的用于处理主题和插件设置的工具。它们分别用于不同的场景和目的,但都旨在简化在WordPress仪表板中添加设置和选项的过程。 Settings API Settings API主要用…

java_基础——ArrayList

1.ArrayList构造方法和添加方法 方法名说明public ArrayList创建一个空的集合对象public boolean add(E e)将指定的元素追加到此集合的末尾public void add(int index,E element)在此集合的指定位置插入指定的元素 import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_O…

MySQL进阶_EXPLAIN重点字段解析

文章目录 第一节.准备1.1 版本信息1.2 准备 第二节.type2.1 system2.2 const2.3 eq_ref2.4 ref2.5 ref_or_null2.6 index_merge2.7 unique_subquery2.8 range2.9 index2.10 all 第三节. Extra3.1 No tables used3.2 No tables used3.3 Using where3.4 No matching min/max row3…

【数据结构高阶】AVL树

上期博客我们讲解了set/multiset/map/multimap的使用,下面我们来深入到底层,讲解其内部结构: 目录 一、AVL树的概念 二、AVL树的实现 2.1 节点的定义 2.2 数据的插入 2.2.1 平衡因子的调整 2.2.1.1 调整平衡因子的规律 2.2.2 子树的旋…

JavaEE 多线程

JavaEE 多线程 文章目录 JavaEE 多线程引子多线程1. 特性2. Thread类2.1 概念2.2 Thread的常见构造方法2.3 Thread的几个常见属性2.4 启动一个线程2.5 中断一个线程2.6 等待一个线程2.7 获取当前线程引用2.8 休眠当前线程 3. 线程状态 引子 当进入多线程这一块内容时&#xff…

2023-12-03 LeetCode每日一题(可获得的最大点数)

2023-12-03每日一题 一、题目编号 1423. 可获得的最大点数二、题目链接 点击跳转到题目位置 三、题目描述 几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。 每次行动,你可以从行的开头或者末尾拿一张卡牌&#x…

【Python/Java/C++三种语言】20天拿下华为OD笔试之【哈希表】2023B-单词接龙【欧弟算法】全网注释最详细分类最全的华为OD真题题解

文章目录 题目描述与示例题目描述输入描述输出描述示例一输入输出说明 示例二输入输出说明 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 单词接龙的规则是: 可用于接龙的单词首字母必须要前一个单词的…

虚拟机扩容磁盘/dev/mapper/centos-root

虚拟机扩容磁盘/dev/mapper/centos-root 1. 在虚拟机管理界面增加磁盘大小或添加磁盘 2. 扩容操作 lsblk -l # 下面/dev/sdb 每个人的可能不同,有/dev/sda 或 /dev/sdc,根据实际更改 fdis /dev/sdb m n p 1 回车 回车 wfdisk -l pvdisplay pvcrea…

Vue.js中v-if 和 v-show 的区别

1、v-if: v-if 指令是 Vue.js 中的一个条件渲染指令。 当 v-if 的条件为 false 时,元素及其内容将从 DOM 中完全移除。 适用于你期望大部分时间条件为 false,或者当你希望通过完全移除元素来节省资源时。 2、v-show: v-show 指令同样也是一个条件渲染…

信息流广告行为兴趣定向底层逻辑算法

行为兴趣定向 1: 行为兴趣的背后是计划的数据 行为是用户在平台的动作:点赞、评论、分享、点击、下单、成交等,用户发生过的标签 兴趣不一定发生,我有打高尔夫的兴趣,但是从来没打过,因为穷 系统会根据用户的行为标…

C++STL中的string容器

string 容器基本概念 C 风格字符串 ( 以空字符结尾的字符数组 ) 太过复杂难于掌握,不适合大程序的开发, 所以 C 标准库定义了一种 string 类,定义在头文件。 String 和 c 风格字符串对比: u Char*是一个指针, …

【C++ Primer Plus学习记录】第5章编程练习

1.编写一个要求用户输入两个整数的程序。该程序将计算并输出这两个整数之间(包括这两个整数)所有整数的和。这里假设先输入较小的整数。例如,如果用户输入的是2和9,则程序将指出2~9之间所有整数的和为44。 //5.9 1 #if 1 #includ…

使用OpenMVS重建模型

1、数据格式转换 首先将生成的稠密点云以及图片信息转换成openmvs支持的.mvs文件。在openmvs_sample中的bin文件内打开终端 作者:舞曲的小水瓶 https://www.bilibili.com/read/cv25019877/ 出处:bilibili interfaceCOLMAP.exe -i D:\desktop\test\toy\…

【Linux服务器Java环境搭建】05 Node JS安装及环境变量配置

【Linux服务器Java环境搭建】01购买云服务器以及在服务器中安装Linux系统 【Linux服务器Java环境搭建】02 通过xftp和xshell远程连接云服务器 【Linux服务器Java环境搭建】03 Git工具安装 【Linux服务器Java环境搭建】04 JDK安装(JAVA环境安装) 【Linux服…

flink源码分析 - 命令行参数解析-CommandLineParser

flink版本: flink-1.11.2 调用位置: org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint#main 代码位置: flink核心命令行解析器: org.apache.flink.runtime.entrypoint.parser.CommandLineParser /** Licensed to the Apache Software Foundati…