一百八十三、大数据离线数仓完整流程——步骤二、在Hive的ODS层建外部表并加载HDFS中的数据

news/2024/5/20 4:09:08 标签: 大数据, hive, hdfs

一、目的

经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。

二、数仓实施步骤

(二)步骤二、在Hive的ODS层建外部表加载HDFS中的数据

1、Hive的ODS层建库建表语句

--如果不存在则创建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层表不是分区表,不需要静态分区

2、海豚执行ODS层建表语句工作流

对于刚部署的服务器,由于Hive没有建库建表、而且手动建表效率低,因此通过海豚调度器直接执行建库建表的.sql文件

(1)海豚的资源中心加建库建表的SQL文件

(2)海豚配置ODS层建表语句的工作流(不需要定时,一次就行

3、海豚配置ODS层表每日加载HDFS数据的工作流

(1)海豚ODS层工作流配置(需要定时,每日一次

#! /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

"

(2)工作流定时任务设置

(3)注意点
3.3.1 由于HDFS每种数据每天写入的是一个文件,而且kettle任务在不停执行、不断写入,因此需要先get到Linux本地,才能得到一个有数据的文件。

hdfs dfs -get  /rtp/turnratio/turnratio.csv  /home/hdfs_rtp_data/turnratio/

3.3.2 需要先删除Linux本地的数据文件,再从HDFS每日get文件

rm -rf /home/hdfs_rtp_data/turnratio/turnratio.csv
hdfs dfs -get  /rtp/turnratio/turnratio.csv  /home/hdfs_rtp_data/turnratio/

3.3.3 需要注意服务器各文件夹的磁盘使用情况,把HDFS文件下载到磁盘大的文件夹下

hdfs dfs -get  /rtp/turnratio/turnratio.csv  /home/hdfs_rtp_data/turnratio/

3.3.4 从Linux本地加载数据到ODS层外部表,由于每次都是全部数据,所以直接overwrite写入

load data local inpath '/home/hdfs_rtp_data/turnratio/turnratio.csv'
overwrite into  table  ods_turnratio

剩余数仓部分,待续!


http://www.niftyadmin.cn/n/5056607.html

相关文章

2023 MacBook Pro (Apple M2 Pro、macOS Ventura)配置Android开发环境

配置git和ssh 配置git简单,用brew下载就行。ssh配置其实也很简单,但是在macOS Ventura系统上遇到了加密方式的问题。 新mac的系统是macOS Ventura。 git 配置ssh网上有很多教程,但是,我正常生成密钥/共钥,把公钥配置…

leetcodetop100(29) K 个一组翻转链表

K 个一组翻转链表 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改…

章节2:Webshell介绍

章节2:Webshell介绍 一句话木马 代码短,只有一行代码。 场景多,可以单独生成文件,也可以插入到图片中。 安全性高,隐匿性强,可变形免杀 小马 体积小,功能少 只有文件上传功能 大马 体积…

TensorFlow入门(八、TensorBoard可视化工具的应用)

TensorBoard常用函数和类http://t.csdn.cn/Hqi9c TensorBoard可视化的过程: ①确定一个整体的图表,明确从这个图表中获取哪些数据的信息 ②确定在程序的哪些节点、以什么样的方式进行汇总数据的运算,以记录信息,比如在反向传播定义以后,使用tf.summary.scalar记录损失值的变…

【深度学习实验】卷积神经网络(六):卷积神经网络模型(VGG)训练、评价

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集(CIFAR10Dataset) a. read_csv_labels() b. CIFAR10Dataset 2. 构建模型(FeedForward&…

[C++ 网络协议] 重叠I/O模型

目录 1. 什么是重叠I/O模型 2. 重叠I/O模型的实现 2.1 创建重叠非阻塞I/O模式的套接字 2.2 执行重叠I/O的Send函数 2.3 执行重叠I/O的Recv函数 2.4 获取执行I/O重叠的函数的执行结果 2.5 重叠I/O的I/O完成确认 2.5.1 使用事件对象(使用重叠I/O函数的第六个参…

【Vue】ElementUI核心标签以及在Vue中的使用

ElementUI是一个基于Vue.js的UI组件库,提供了一系列的高质量、可定制的UI组件,用于构建Web应用程序的前端界面。 ElementUI的核心标签包括: 1. Button(按钮):用于触发操作或提交表单。 2. Input&#xff…

美美游玩规划

2023年的国庆 游玩规划: 时间安排是9月29日到10月2日上午; 可以有三个整天加一个上午,上午可以去一个近一点的地方; 可能要去的景点: 天安门广场、颐和园、西单购物中心、故宫、天坛公园、 毛主席纪念堂(2…