(5)數倉搭建之ODS層5

3.1 創建數據庫
1)創建gmall數據庫
hive (default)> create database gmall;
說明:如果數據庫存在且有數據,需要強制刪除時執行:drop database gmall cascade;
2)使用gmall數據庫
hive (default)> use gmall;
3.2 ODS層
原始數據層,存放原始數據,直接加載原始日誌、數據,數據保持原貌不做處理。
3.2.1 創建啓動日誌表ods_start_log

1)創建輸入數據是lzo輸出是text,支持json解析的分區表
hive (gmall)>
drop table if exists ods_start_log;
CREATE EXTERNAL TABLE ods_start_log (line string)
PARTITIONED BY (dt string)
STORED AS
INPUTFORMAT ‘com.hadoop.mapred.DeprecatedLzoTextInputFormat’
OUTPUTFORMAT ‘org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat’
LOCATION ‘/warehouse/gmall/ods/ods_start_log’;
說明Hive的LZO壓縮:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LZO
2)加載數據
hive (gmall)>
load data inpath ‘/origin_data/gmall/log/topic_start/2019-02-10’ into table gmall.ods_start_log partition(dt=‘2019-02-10’);
注意:時間格式都配置成YYYY-MM-DD格式,這是Hive默認支持的時間格式
3)查看是否加載成功
hive (gmall)> select * from ods_start_log limit 2;

3.2.2 創建事件日誌表ods_event_log

1)創建輸入數據是lzo輸出是text,支持json解析的分區表
hive (gmall)>
drop table if exists ods_event_log;
CREATE EXTERNAL TABLE ods_event_log(line string)
PARTITIONED BY (dt string)
STORED AS
INPUTFORMAT ‘com.hadoop.mapred.DeprecatedLzoTextInputFormat’
OUTPUTFORMAT ‘org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat’
LOCATION ‘/warehouse/gmall/ods/ods_event_log’;
2)加載數據
hive (gmall)>
load data inpath ‘/origin_data/gmall/log/topic_event/2019-02-10’ into table gmall.ods_event_log partition(dt=‘2019-02-10’);
注意:時間格式都配置成YYYY-MM-DD格式,這是Hive默認支持的時間格式
3)查看是否加載成功
hive (gmall)> select * from ods_event_log limit 2;

3.2.4 ODS層加載數據腳本

1)在hadoop102的/home/atguigu/bin目錄下創建腳本
[atguigu@hadoop102 bin]$ vim ods_log.sh
在腳本中編寫如下內容
#!/bin/bash

定義變量方便修改

APP=gmall
hive=/opt/module/hive/bin/hive

如果是輸入的日期按照取輸入日期;如果沒輸入日期取當前時間的前一天

if [ -n “$1” ] ;then
do_date=$1
else
do_date=date -d "-1 day" +%F
fi

echo "===日誌日期爲 dodate==="sql="loaddatainpath/origindata/gmall/log/topicstart/do_date===" sql=" load data inpath '/origin_data/gmall/log/topic_start/do_date’ into table "APP".odsstartlogpartition(dt=APP".ods_start_log partition(dt='do_date’);

load data inpath ‘/origin_data/gmall/log/topic_event/dodateintotable"do_date' into table "APP".ods_event_log partition(dt=’$do_date’);
"

hivee"hive -e "sql"
說明1:
[ -n 變量值 ] 判斷變量的值,是否爲空
– 變量的值,非空,返回true
– 變量的值,爲空,返回false
說明2:
查看date命令的使用,[atguigu@hadoop102 ~]$ date --help
2)增加腳本執行權限
[atguigu@hadoop102 bin]$ chmod 777 ods_log.sh
3)腳本使用
[atguigu@hadoop102 module]$ ods_log.sh 2019-02-11
4)查看導入數據
hive (gmall)>
select * from ods_start_log where dt=‘2019-02-11’ limit 2;
select * from ods_event_log where dt=‘2019-02-11’ limit 2;
5)腳本執行時間
企業開發中一般在每日凌晨30分~1點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章