经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。
--如果不存在则创建hurys_dc_ods数据库
create database if not exists hurys_dc_ods;
--使用hurys_dc_ods数据库
use hurys_dc_ods;
--1、创建转向比数据外部表 ods_turnratio
create external table if not exists ods_turnratio(
device_no string comment '设备编号(点位)',
cycle float comment '周期',
create_time timestamp comment '创建时间',
volume_sum float comment '指定时间段内通过路口的车辆总数',
speed_avg float comment '指定时间段内通过路口的所有车辆速度的平均值',
volume_left float comment '指定时间段内通过路口的左转车辆总数',
speed_left float comment '指定时间段内通过路口的左转车辆速度的平均值',
volume_straight float comment '指定时间段内通过路口的直行车辆总数',
speed_straight float comment '指定时间段内通过路口的直行车辆速度的平均值',
volume_right float comment '指定时间段内通过路口的右转车辆总数',
speed_right float comment '指定时间段内通过路口的右转车辆速度的平均值'
)
comment '转向比数据表'
row format delimited fields terminated by ','
tblproperties("skip.header.line.count"="1");
注意:由于HDFS每种数据每天写入的是一个文件,所以ODS层表不是分区表,不需要静态分区
对于刚部署的服务器,由于Hive没有建库建表、而且手动建表效率低,因此通过海豚调度器直接执行建库建表的.sql文件
#! /bin/bash
source /etc/profile
rm -rf /home/hdfs_rtp_data/turnratio/turnratio.csv
hdfs dfs -get /rtp/turnratio/turnratio.csv /home/hdfs_rtp_data/turnratio/
hive -e "
use hurys_dc_ods;
set hive.vectorized.execution.enabled=false;
set hive.auto.convert.join=false;
set mapreduce.map.memory.mb=10150;
set mapreduce.map.java.opts=-Xmx6144m;
set mapreduce.reduce.memory.mb=10150;
set mapreduce.reduce.java.opts=-Xmx8120m;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.dynamic.partition=true;
set hive.exec.parallel=true;
set hive.support.concurrency=false;
set mapreduce.map.memory.mb=4128;
set hive.vectorized.execution.enabled=false;
load data local inpath '/home/hdfs_rtp_data/turnratio/turnratio.csv'
overwrite into table ods_turnratio
"
hdfs dfs -get /rtp/turnratio/turnratio.csv /home/hdfs_rtp_data/turnratio/
rm -rf /home/hdfs_rtp_data/turnratio/turnratio.csv
hdfs dfs -get /rtp/turnratio/turnratio.csv /home/hdfs_rtp_data/turnratio/
hdfs dfs -get /rtp/turnratio/turnratio.csv /home/hdfs_rtp_data/turnratio/
load data local inpath '/home/hdfs_rtp_data/turnratio/turnratio.csv'
overwrite into table ods_turnratio
剩余数仓部分,待续!