資料庫建模 全量表匯入
create_databaseAndTable.sql ------------------------------------------------
-- 1 建立ODS層庫:
CREATE DATABASE IF NOT EXISTS `itcast_ods`;
-- 2 在ODS層庫中, 構建兩張ODS的事實表
-- 2.1: 構建訪問諮詢表
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE EXTERNAL TABLE IF NOT EXISTS itcast_ods.web_chat_ems (
create_date_time STRING comment '資料建立時間',
session_id STRING comment '七陌sessionId',
sid STRING comment '訪客id',
create_time STRING comment '會話建立時間',
seo_source STRING comment '搜尋來源',
seo_keywords STRING comment '關鍵字',
ip STRING comment 'IP地址',
area STRING comment '地域',
country STRING comment '所在國家',
city STRING comment '城市',
origin_channel STRING comment '投放渠道',
user_match STRING comment '所屬坐席',
manual_time STRING comment '人工開始時間',
begin_time STRING comment '坐席領取時間 ',
end_time STRING comment '會話結束時間',
last_customer_msg_time_stamp STRING comment '客戶最後一條訊息的時間',
reply_msg_count INT comment '客服回覆訊息數',
msg_count INT comment '客戶傳送訊息數',
browser_name STRING comment '瀏覽器名稱',
os_info STRING comment '系統名稱'
)comment '訪問會話資訊表'
PARTITIONED BY(starts_time STRING) -- 用於指定抽取表時間
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
stored as orc
location '/user/hive/warehouse/itcast_ods.db/web_chat_ems_ods'
TBLPROPERTIES ('orc.compress'='ZLIB');
-- 2.2 構建 訪問諮詢表的副表
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE EXTERNAL TABLE IF NOT EXISTS itcast_ods.web_chat_text_ems (
id INT COMMENT '主鍵來自MySQL',
referrer STRING comment '上級來源頁面',
from_url STRING comment '會話來源頁面',
landing_page_url STRING comment '訪客著陸頁面',
url_title STRING comment '諮詢頁面title',
platform_description STRING comment '客戶平臺資訊',
other_params STRING comment '擴充套件欄位中資料',
history STRING comment '歷史訪問記錄'
) comment 'EMS-PV測試表'
PARTITIONED BY(start_time STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
stored as orc
location '/user/hive/warehouse/itcast_ods.db/web_chat_text_ems_ods'
TBLPROPERTIES ('orc.compress'='ZLIB');
-- 3 構建 DWD層
-- 3.1 先構建DWD層的資料庫:
CREATE DATABASE IF NOT EXISTS `itcast_dwd`;
--3.2 在DWD層中建立DWD表:
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
create table if not exists itcast_dwd.visit_consult_dwd(
session_id STRING comment '七陌sessionId',
sid STRING comment '訪客id',
create_time bigint comment '會話建立時間',
seo_source STRING comment '搜尋來源',
ip STRING comment 'IP地址',
area STRING comment '地域',
msg_count int comment '客戶傳送訊息數',
origin_channel STRING COMMENT '來源渠道',
referrer STRING comment '上級來源頁面',
from_url STRING comment '會話來源頁面',
landing_page_url STRING comment '訪客著陸頁面',
url_title STRING comment '諮詢頁面title',
platform_description STRING comment '客戶平臺資訊',
other_params STRING comment '擴充套件欄位中資料',
history STRING comment '歷史訪問記錄',
hourinfo string comment '小時'
)
comment '訪問諮詢DWD表'
partitioned by(yearinfo String, quarterinfo string , monthinfo String, dayinfo string)
row format delimited fields terminated by '\t'
stored as orc
location '/user/hive/warehouse/itcast_dwd.db/visit_consult_dwd'
tblproperties ('orc.compress'='SNAPPY');
/*
說明:
1. 對create_time 切割為 年 季度 月 天 小時
2. 對 create_time 轉換為時間戳(方便後面根據日期計算)
此處在生產中 有時候也會統一某一種日期格式也是ok的
*/
--4 構建 DWS層: 二張表
--4.1: 建立DWS層的資料庫
CREATE DATABASE IF NOT EXISTS `itcast_dws`;
--4.2: 建立訪問量的DWS表:
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE TABLE IF NOT EXISTS itcast_dws.visit_dws (
sid_total INT COMMENT '根據sid去重求count',
sessionid_total INT COMMENT '根據sessionid去重求count',
ip_total INT COMMENT '根據IP去重求count',
area STRING COMMENT '區域資訊',
seo_source STRING COMMENT '搜尋來源',
origin_channel STRING COMMENT '來源渠道',
hourinfo STRING COMMENT '建立時間,統計至小時',
time_str STRING COMMENT '時間明細',
from_url STRING comment '會話來源頁面',
groupType STRING COMMENT '產品屬性型別:1.地區;2.搜尋來源;3.來源渠道;4.會話來源頁面;5.總訪問量',
time_type STRING COMMENT '時間聚合型別:1、按小時聚合;2、按天聚合;3、按月聚合;4、按季度聚合;5、按年聚合;'
)
comment 'EMS訪客日誌dws表'
PARTITIONED BY(yearinfo STRING,quarterinfo STRING,monthinfo STRING,dayinfo STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
stored as orc
location '/user/hive/warehouse/itcast_dws.db/visit_dws'
TBLPROPERTIES ('orc.compress'='SNAPPY');
--4.3: 構建 諮詢量的表
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE TABLE IF NOT EXISTS itcast_dws.consult_dws (
sid_total INT COMMENT '根據sid去重求count',
sessionid_total INT COMMENT '根據sessionid去重求count',
ip_total INT COMMENT '根據IP去重求count',
area STRING COMMENT '區域資訊',
origin_channel STRING COMMENT '來源渠道',
hourinfo STRING COMMENT '建立時間,統計至小時',
time_str STRING COMMENT '時間明細',
groupType STRING COMMENT '產品屬性型別:1.地區;2.來源渠道',
time_type STRING COMMENT '時間聚合型別:1、按小時聚合;2、按天聚合;3、按月聚合;4、按季度聚合;5、按年聚合;'
)
COMMENT '諮詢量DWS寬表'
PARTITIONED BY (yearinfo string, quarterinfo STRING , monthinfo STRING, dayinfo string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS ORC
LOCATION '/user/hive/warehouse/itcast_dws.db/consult_dws'
TBLPROPERTIES ('orc.compress'='SNAPPY');
-------------------------------------------------------------------------------------load_data_sqoop.sql
-- 此指令碼是用於放置 從 業務資料庫--> ODS層操作記錄
--訪問諮詢主題看板:
-- 抽取 SQL:
SELECT
id,create_date_time,session_id,sid,create_time,
seo_source,seo_keywords,ip,`area`,country,province,
city,origin_channel,`user` AS user_match,manual_time,
begin_time,end_time,last_customer_msg_time_stamp,
last_agent_msg_time_stamp,reply_msg_count,msg_count,
browser_name,os_info, '2020-11-28' AS starts_time
FROM web_chat_ems_2019_07;
-- 通過sqoop命令來執行上述SQL
sqoop import \
--connect jdbc:mysql://192.168.52.150:3306/nev \
--username root --password 123456 \
--query "SELECT
id,create_date_time,session_id,sid,create_time,
seo_source,seo_keywords,ip,area,country,province,
city,origin_channel,user AS user_match,manual_time,
begin_time,end_time,last_customer_msg_time_stamp,
last_agent_msg_time_stamp,reply_msg_count,msg_count,
browser_name,os_info, '2020-11-28' AS starts_time
FROM web_chat_ems_2019_07 where 1=1 and \$CONDITIONS" \
--fields-terminated-by '\t' \
--hcatalog-database itcast_ods \
--hcatalog-table web_chat_ems \
-m 3 \
--split-by id
-- 抽取SQL(副表) :
SELECT
id,referrer,from_url,landing_page_url,
url_title,platform_description,
other_params,history, '2020-11-28' AS start_time
FROM web_chat_text_ems_2019_07;
-- 通過sqoop命令來執行上述SQL
sqoop import \
--connect jdbc:mysql://192.168.52.150:3306/nev \
--username root --password 123456 \
--query "SELECT
id,referrer,from_url,landing_page_url,
url_title,platform_description,
other_params,history, '2020-11-28' AS start_time
FROM web_chat_text_ems_2019_07 where 1=1 and \$CONDITIONS" \
--fields-terminated-by '\t' \
--hcatalog-database itcast_ods \
--hcatalog-table web_chat_text_ems \
-m 3 \
--split-by id
-- 注意在 hive中進行校驗時 發現原有hiveserver2的服務的堆疊記憶體配置過低, 導致hiveserver2出現
-- 異常宕機問題, 對堆疊記憶體重新這隻為 1GB , 重啟服務
---------------------------------------------------------------------create_databaseAndTable.sql
-- 1 建立ODS層庫:
CREATE DATABASE IF NOT EXISTS `itcast_ods`;
-- 2 在ODS層庫中, 構建兩張ODS的事實表
-- 2.1: 構建訪問諮詢表
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE EXTERNAL TABLE IF NOT EXISTS itcast_ods.web_chat_ems (
id INT comment '主鍵',
create_date_time STRING comment '資料建立時間',
session_id STRING comment '七陌sessionId',
sid STRING comment '訪客id',
create_time STRING comment '會話建立時間',
seo_source STRING comment '搜尋來源',
seo_keywords STRING comment '關鍵字',
ip STRING comment 'IP地址',
area STRING comment '地域',
country STRING comment '所在國家',
province STRING comment '省',
city STRING comment '城市',
origin_channel STRING comment '投放渠道',
user_match STRING comment '所屬坐席',
manual_time STRING comment '人工開始時間',
begin_time STRING comment '坐席領取時間 ',
end_time STRING comment '會話結束時間',
last_customer_msg_time_stamp STRING comment '客戶最後一條訊息的時間',
last_agent_msg_time_stamp STRING comment '坐席最後一下回復的時間',
reply_msg_count INT comment '客服回覆訊息數',
msg_count INT comment '客戶傳送訊息數',
browser_name STRING comment '瀏覽器名稱',
os_info STRING comment '系統名稱'
)comment '訪問會話資訊表'
PARTITIONED BY(starts_time STRING) -- 用於指定抽取表時間
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
stored as orc
location '/user/hive/warehouse/itcast_ods.db/web_chat_ems_ods'
TBLPROPERTIES ('orc.compress'='ZLIB');
-- 2.2 構建 訪問諮詢表的副表
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE EXTERNAL TABLE IF NOT EXISTS itcast_ods.web_chat_text_ems (
id INT COMMENT '主鍵來自MySQL',
referrer STRING comment '上級來源頁面',
from_url STRING comment '會話來源頁面',
landing_page_url STRING comment '訪客著陸頁面',
url_title STRING comment '諮詢頁面title',
platform_description STRING comment '客戶平臺資訊',
other_params STRING comment '擴充套件欄位中資料',
history STRING comment '歷史訪問記錄'
) comment 'EMS-PV測試表'
PARTITIONED BY(start_time STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
stored as orc
location '/user/hive/warehouse/itcast_ods.db/web_chat_text_ems_ods'
TBLPROPERTIES ('orc.compress'='ZLIB');
-- 3 構建 DWD層
-- 3.1 先構建DWD層的資料庫:
CREATE DATABASE IF NOT EXISTS `itcast_dwd`;
--3.2 在DWD層中建立DWD表:
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
create table if not exists itcast_dwd.visit_consult_dwd(
session_id STRING comment '七陌sessionId',
sid STRING comment '訪客id',
create_time bigint comment '會話建立時間',
seo_source STRING comment '搜尋來源',
ip STRING comment 'IP地址',
area STRING comment '地域',
msg_count int comment '客戶傳送訊息數',
origin_channel STRING COMMENT '來源渠道',
referrer STRING comment '上級來源頁面',
from_url STRING comment '會話來源頁面',
landing_page_url STRING comment '訪客著陸頁面',
url_title STRING comment '諮詢頁面title',
platform_description STRING comment '客戶平臺資訊',
other_params STRING comment '擴充套件欄位中資料',
history STRING comment '歷史訪問記錄',
hourinfo string comment '小時'
)
comment '訪問諮詢DWD表'
partitioned by(yearinfo String, quarterinfo string , monthinfo String, dayinfo string)
row format delimited fields terminated by '\t'
stored as orc
location '/user/hive/warehouse/itcast_dwd.db/visit_consult_dwd'
tblproperties ('orc.compress'='SNAPPY');
/*
說明:
1. 對create_time 切割為 年 季度 月 天 小時
2. 對 create_time 轉換為時間戳(方便後面根據日期計算)
此處在生產中 有時候也會統一某一種日期格式也是ok的
*/
--4 構建 DWS層: 二張表
--4.1: 建立DWS層的資料庫
CREATE DATABASE IF NOT EXISTS `itcast_dws`;
--4.2: 建立訪問量的DWS表:
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE TABLE IF NOT EXISTS itcast_dws.visit_dws (
sid_total INT COMMENT '根據sid去重求count',
sessionid_total INT COMMENT '根據sessionid去重求count',
ip_total INT COMMENT '根據IP去重求count',
area STRING COMMENT '區域資訊',
seo_source STRING COMMENT '搜尋來源',
origin_channel STRING COMMENT '來源渠道',
hourinfo STRING COMMENT '建立時間,統計至小時',
time_str STRING COMMENT '時間明細',
from_url STRING comment '會話來源頁面',
groupType STRING COMMENT '產品屬性型別:1.地區;2.搜尋來源;3.來源渠道;4.會話來源頁面;5.總訪問量',
time_type STRING COMMENT '時間聚合型別:1、按小時聚合;2、按天聚合;3、按月聚合;4、按季度聚合;5、按年聚合;'
)
comment 'EMS訪客日誌dws表'
PARTITIONED BY(yearinfo STRING,quarterinfo STRING,monthinfo STRING,dayinfo STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
stored as orc
location '/user/hive/warehouse/itcast_dws.db/visit_dws'
TBLPROPERTIES ('orc.compress'='SNAPPY');
--4.3: 構建 諮詢量的表
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE TABLE IF NOT EXISTS itcast_dws.consult_dws (
sid_total INT COMMENT '根據sid去重求count',
sessionid_total INT COMMENT '根據sessionid去重求count',
ip_total INT COMMENT '根據IP去重求count',
area STRING COMMENT '區域資訊',
origin_channel STRING COMMENT '來源渠道',
hourinfo STRING COMMENT '建立時間,統計至小時',
time_str STRING COMMENT '時間明細',
groupType STRING COMMENT '產品屬性型別:1.地區;2.來源渠道',
time_type STRING COMMENT '時間聚合型別:1、按小時聚合;2、按天聚合;3、按月聚合;4、按季度聚合;5、按年聚合;'
)
COMMENT '諮詢量DWS寬表'
PARTITIONED BY (yearinfo string, quarterinfo STRING , monthinfo STRING, dayinfo string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS ORC
LOCATION '/user/hive/warehouse/itcast_dws.db/consult_dws'
TBLPROPERTIES ('orc.compress'='SNAPPY');
---------------------------------------------export_dataBI.sql
-- 1 建立ODS層庫:
CREATE DATABASE IF NOT EXISTS `itcast_ods`;
-- 2 在ODS層庫中, 構建兩張ODS的事實表
-- 2.1: 構建訪問諮詢表
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE EXTERNAL TABLE IF NOT EXISTS itcast_ods.web_chat_ems (
id INT comment '主鍵',
create_date_time STRING comment '資料建立時間',
session_id STRING comment '七陌sessionId',
sid STRING comment '訪客id',
create_time STRING comment '會話建立時間',
seo_source STRING comment '搜尋來源',
seo_keywords STRING comment '關鍵字',
ip STRING comment 'IP地址',
area STRING comment '地域',
country STRING comment '所在國家',
province STRING comment '省',
city STRING comment '城市',
origin_channel STRING comment '投放渠道',
user_match STRING comment '所屬坐席',
manual_time STRING comment '人工開始時間',
begin_time STRING comment '坐席領取時間 ',
end_time STRING comment '會話結束時間',
last_customer_msg_time_stamp STRING comment '客戶最後一條訊息的時間',
last_agent_msg_time_stamp STRING comment '坐席最後一下回復的時間',
reply_msg_count INT comment '客服回覆訊息數',
msg_count INT comment '客戶傳送訊息數',
browser_name STRING comment '瀏覽器名稱',
os_info STRING comment '系統名稱'
)comment '訪問會話資訊表'
PARTITIONED BY(starts_time STRING) -- 用於指定抽取表時間
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
stored as orc
location '/user/hive/warehouse/itcast_ods.db/web_chat_ems_ods'
TBLPROPERTIES ('orc.compress'='ZLIB');
-- 2.2 構建 訪問諮詢表的副表
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE EXTERNAL TABLE IF NOT EXISTS itcast_ods.web_chat_text_ems (
id INT COMMENT '主鍵來自MySQL',
referrer STRING comment '上級來源頁面',
from_url STRING comment '會話來源頁面',
landing_page_url STRING comment '訪客著陸頁面',
url_title STRING comment '諮詢頁面title',
platform_description STRING comment '客戶平臺資訊',
other_params STRING comment '擴充套件欄位中資料',
history STRING comment '歷史訪問記錄'
) comment 'EMS-PV測試表'
PARTITIONED BY(start_time STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
stored as orc
location '/user/hive/warehouse/itcast_ods.db/web_chat_text_ems_ods'
TBLPROPERTIES ('orc.compress'='ZLIB');
-- 3 構建 DWD層
-- 3.1 先構建DWD層的資料庫:
CREATE DATABASE IF NOT EXISTS `itcast_dwd`;
--3.2 在DWD層中建立DWD表:
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
create table if not exists itcast_dwd.visit_consult_dwd(
session_id STRING comment '七陌sessionId',
sid STRING comment '訪客id',
create_time bigint comment '會話建立時間',
seo_source STRING comment '搜尋來源',
ip STRING comment 'IP地址',
area STRING comment '地域',
msg_count int comment '客戶傳送訊息數',
origin_channel STRING COMMENT '來源渠道',
referrer STRING comment '上級來源頁面',
from_url STRING comment '會話來源頁面',
landing_page_url STRING comment '訪客著陸頁面',
url_title STRING comment '諮詢頁面title',
platform_description STRING comment '客戶平臺資訊',
other_params STRING comment '擴充套件欄位中資料',
history STRING comment '歷史訪問記錄',
hourinfo string comment '小時'
)
comment '訪問諮詢DWD表'
partitioned by(yearinfo String, quarterinfo string , monthinfo String, dayinfo string)
row format delimited fields terminated by '\t'
stored as orc
location '/user/hive/warehouse/itcast_dwd.db/visit_consult_dwd'
tblproperties ('orc.compress'='SNAPPY');
/*
說明:
1. 對create_time 切割為 年 季度 月 天 小時
2. 對 create_time 轉換為時間戳(方便後面根據日期計算)
此處在生產中 有時候也會統一某一種日期格式也是ok的
*/
--4 構建 DWS層: 二張表
--4.1: 建立DWS層的資料庫
CREATE DATABASE IF NOT EXISTS `itcast_dws`;
--4.2: 建立訪問量的DWS表:
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE TABLE IF NOT EXISTS itcast_dws.visit_dws (
sid_total INT COMMENT '根據sid去重求count',
sessionid_total INT COMMENT '根據sessionid去重求count',
ip_total INT COMMENT '根據IP去重求count',
area STRING COMMENT '區域資訊',
seo_source STRING COMMENT '搜尋來源',
origin_channel STRING COMMENT '來源渠道',
hourinfo STRING COMMENT '建立時間,統計至小時',
time_str STRING COMMENT '時間明細',
from_url STRING comment '會話來源頁面',
groupType STRING COMMENT '產品屬性型別:1.地區;2.搜尋來源;3.來源渠道;4.會話來源頁面;5.總訪問量',
time_type STRING COMMENT '時間聚合型別:1、按小時聚合;2、按天聚合;3、按月聚合;4、按季度聚合;5、按年聚合;'
)
comment 'EMS訪客日誌dws表'
PARTITIONED BY(yearinfo STRING,quarterinfo STRING,monthinfo STRING,dayinfo STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
stored as orc
location '/user/hive/warehouse/itcast_dws.db/visit_dws'
TBLPROPERTIES ('orc.compress'='SNAPPY');
--4.3: 構建 諮詢量的表
--寫入時壓縮生效 (必須開啟壓縮生效, 否則後續建表時無法生效壓縮)
set hive.exec.orc.compression.strategy=COMPRESSION;
CREATE TABLE IF NOT EXISTS itcast_dws.consult_dws (
sid_total INT COMMENT '根據sid去重求count',
sessionid_total INT COMMENT '根據sessionid去重求count',
ip_total INT COMMENT '根據IP去重求count',
area STRING COMMENT '區域資訊',
origin_channel STRING COMMENT '來源渠道',
hourinfo STRING COMMENT '建立時間,統計至小時',
time_str STRING COMMENT '時間明細',
groupType STRING COMMENT '產品屬性型別:1.地區;2.來源渠道',
time_type STRING COMMENT '時間聚合型別:1、按小時聚合;2、按天聚合;3、按月聚合;4、按季度聚合;5、按年聚合;'
)
COMMENT '諮詢量DWS寬表'
PARTITIONED BY (yearinfo string, quarterinfo STRING , monthinfo STRING, dayinfo string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS ORC
LOCATION '/user/hive/warehouse/itcast_dws.db/consult_dws'
TBLPROPERTIES ('orc.compress'='SNAPPY');