大資料實戰(七十八):電商數倉(六十二)數倉之業務數倉搭建(五)ADS層(需求:GMV成交總額)
阿新 • • 發佈:2020-08-28
1建表語句
hive (gmall)> drop table if exists ads_gmv_sum_day; create external table ads_gmv_sum_day( `dt` string COMMENT '統計日期', `gmv_count` bigint COMMENT '當日gmv訂單個數', `gmv_amount` decimal(16,2) COMMENT '當日gmv訂單總金額', `gmv_payment` decimal(16,2) COMMENT '當日支付金額' ) COMMENT 'GMV' row format delimited fields terminated by'\t' location '/warehouse/gmall/ads/ads_gmv_sum_day/' ;
2資料匯入指令碼
1)在/root/bin目錄下建立指令碼ads_db_gmv.sh
[root@hadoop102 bin]$ vim ads_db_gmv.sh
在指令碼中填寫如下內容
#!/bin/bash # 定義變數方便修改 APP=gmall # 如果是輸入的日期按照取輸入日期;如果沒輸入日期取當前時間的前一天 if [ -n "$1" ] ;then do_date=$1 else do_date=`date -d "-1 day" +%F` fi sql=" insert into table "$APP".ads_gmv_sum_day select '$do_date' dt, sum(order_count) gmv_count, sum(order_amount) gmv_amount, sum(payment_amount) payment_amount from "$APP".dws_user_action where dt ='$do_date' group by dt; " beeline -u "jdbc:hive2://hadoop102:10000/" -n hive -e "$sql"
2)增加指令碼執行許可權
[root@hadoop102 bin]$ chmod 777 ads_db_gmv.sh
3)執行指令碼
[root@hadoop102 bin]$ ads_db_gmv.sh 2019-02-10
3 資料導出指令碼
1)在MySQL中建立ads_gmv_sum_day表
DROP TABLE IF EXISTS ads_gmv_sum_day; CREATE TABLE ads_gmv_sum_day( `dt` varchar(200) DEFAULT NULL COMMENT '統計日期', `gmv_count` bigint(20) DEFAULT NULL COMMENT '當日gmv訂單個數', `gmv_amount` decimal(16, 2) DEFAULT NULL COMMENT '當日gmv訂單總金額', `gmv_payment` decimal(16, 2) DEFAULT NULL COMMENT '當日支付金額' ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '每日活躍使用者數量' ROW_FORMAT = Dynamic;
2)在/root/bin目錄下建立指令碼sqoop_export.sh
[root@hadoop102 bin]$ vim sqoop_export.sh
在指令碼中填寫如下內容
#!/bin/bash export HADOOP_USER_NAME=hive db_name=gmall export_data() { sqoop export \ --connect "jdbc:mysql://hadoop102:3306/${db_name}?useUnicode=true&characterEncoding=utf-8" \ --username root \ --password Atguigu.123456 \ --table $1 \ --num-mappers 1 \ --export-dir /warehouse/$db_name/ads/$1 \ --input-fields-terminated-by "\t" \ --update-mode allowinsert \ --update-key $2 \ --input-null-string '\\N' \ --input-null-non-string '\\N' } case $1 in "ads_gmv_sum_day") export_data "ads_gmv_sum_day" "dt" ;; "all") export_data "ads_gmv_sum_day" "dt" ;; esac
3)增加指令碼執行許可權
[root@hadoop102 bin]$ chmod 777 sqoop_export.sh
4)執行指令碼匯入資料
[root@hadoop102 bin]$ sqoop_export.sh all
5)在SQLyog檢視匯出資料
select * from ads_gmv_sum_day