在Hue中创建一个Oozie工作流
准备
建表
假设在mysql中有一个用户信息表user,包含id,name,address三个字段。其中address字段存在字符串null。
在hive创建对应的表:
ods_user - 原始用户信息缓存表
CREATE TABLE IF NOT EXISTS ods.ods_user
(id STRING COMMENT '用户ID',
name STRING COMMENT '用户名',
address STRING COMMENT '地址')
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS TEXTFILE;
1
2
3
4
5
6
7
dwd_user - 原始用户信息明细表
CREATE TABLE IF NOT EXISTS dwd.dwd_user
(id STRING COMMENT '用户ID',
name STRING COMMENT '用户名',
address STRING COMMENT '地址')
STORED AS PARQUET;
1
2
3
4
5
dw_user - 经过清洗转换的用户信息明细表
CREATE TABLE IF NOT EXISTS dw.dw_user
(id STRING COMMENT '用户ID',
name STRING COMMENT '用户名',
address STRING COMMENT '地址')
STORED AS PARQUET;
1
2
3
4
5
数据ETL模拟
为了实现工作流,模拟一个ETL逻辑。
1、使用Sqoop从业务数据库抽取user数据存入ods_user表。
2、查询ods_user表的数据存入dwd_user表。
3、查询dwd_user表中的数据,将address字段中的字符串null转化成NULL,存入dw_user表。
准备工作流任务
按照上述模拟的ETL逻辑,创建相应的任务命令。
任务一
创建mysql2hive.sh文件,写入如下内容:(请替换成真实的连接信息)
sqoop-import \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect jdbc:mysql://<host>:<port>/<db> \
--username <username> \
--password <password> \
--table user \
--fields-terminated-by '\001' \
--delete-target-dir \
--hive-import \
--hive-drop-import-delims \
--hive-table ods.ods_user \
--hive-overwrite \
--null-string '\\N' \
--null-non-string '\\N'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
任务二
创建ods2dwd.sql文件,写入如下内容:
INSERT OVERWRITE TABLE dwd.dwd_user
SELECT *
FROM ods.ods_user;
1
2
3
任务三
创建dwd2dw.sql文件,写入如下内容:
INSERT OVERWRITE TABLE dw.dw_user
SELECT
id,
name,
CASE address
WHEN 'null'
THEN NULL
ELSE address
END
FROM dwd.dwd_user;
1
2
3
4
5
6
7
8
9
10
上传到hdfs
用户是bigdata,所以将上述创建的三个文件上传到hdfs的/user/bigdata/目录下。
组建工作流
工作流创建页面
进入工作流创建页面
页面说明
添加工作流任务
添加任务一
选择Shell Action
选择执行文件
任务配置,由于集群启用了Kerberos,所以需要配置凭据,任务才能执行成功
如果勾选hive2不管用,可以勾选hcat,总有一个管用的。
添加任务二
选择HiveServer2 Action
选择执行文件
添加任务三
选择HiveServer2 Action
选择执行文件
保存工作流
编辑工作流名称和各个任务的名称,然后点击保存按钮,保存工作流。
调度工作流
保存工作流后,点击计划,编辑工作流调度计划
命名调度计划和添加描述,选择要调度的工作流,选择调度策略之后,保存调度计划。
点击保存按钮之后,出现提交按钮,点击提交,启动调度计划。
至此,完成在Hue中创建Oozie工作流并调度。
在Hue中创建一个Oozie工作流相关推荐
- 如何使用Hue上创建一个完整Oozie工作流
1. 文档编写目的 在使用CDH集群中经常会有一些特定顺序的作业需要在集群中运行,对于需要多个作业顺序执行的情况下,如何能够方便的构建一个完整的工作流在CDH集群中执行,前面Fayson也讲过关于Hu ...
- Activiti基础02:手把手带你来创建一个Activiti工作流
更多Java从0-1的笔记均在专栏中- Activiti基础01:从认识Activiti7开始,到环境配置 一.Activiti入门 在本章内容中,我们来创建一个Activiti工作流,并启动这个流程 ...
- 学习在Unity中创建一个动作RPG游戏
游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...
- 学习用C#在Unity中创建一个2D Metroidvania游戏
学习用C#在Unity中创建一个2D Metroidvania游戏 你会学到: 构建2D Unity游戏 用C#编程 玩家统计,水平提升,米尔和远程攻击 敌方人工智能系统 制定级别和级别选择 Lear ...
- 学会在Unity中创建一个Match-3益智游戏 Learn To Create a Match-3 Puzzle Game in Unity
MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:48场讲座(6h 38m) |大小解压后:2.8 G ...
- 在windows中创建一个影子用户
在windows中创建一个影子用户(看不到图请下载附件) 我们可以在windows操作系统中建立一个影子用户,也就是它是实际存在的,但是不会在登录时或者用户组中显示,我们可以赋予影子用户管理员权限,可 ...
- 如何在 Python 中创建一个简单的神经网络
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 引言 在过去的几十年里,机器学习对世界产生了巨大的影响,而且它的普 ...
- 基类和派生类写在一个文件中_BootISO:从 ISO 文件中创建一个可启动的 USB 设备...
今天,我们将讨论名为 BootISO 的实用程序类似工具.它是一个简单的 bash 脚本,允许用户来从 ISO 文件中创建一个可启动的 USB 设备. -- Prakash Subramanian(作 ...
- 如何在Java中创建一个新的List
本文翻译自:How to make a new List in Java We create a Set as: 我们创建一个Set为: Set myset = new HashSet() How d ...
最新文章
- Java并发编程71道面试题及答案
- error: default argument given for parameter 4
- 关于缓存的几篇好文章
- 学成在线--6.CMS页面管理开发(删除页面)
- 一步一步搭建hibernate4+ spring+ struts2
- 侣信即时通讯系统全新发布
- linux文件符数据,linux – 如何监视文件描述符以获得新数据的可用性?
- 181222每日一句
- 获取正在运行的termviewer id和密码
- 2019年,免费的检测僵尸粉软件《雪球微信小助手》,无打扰检测清理微信僵尸粉
- LimeSDR 中文教程 (三)
- 芝麻信用行业关注名单风险标签对照表SQL---福利大家!
- Racket 8.3下载安装(Win10)
- ubuntu独立显卡驱动
- softmax溢出问题
- 【已解决】Mac每次重启,谷歌Chrome都会丢失所有的扩展程序/extensions/插件
- Jdon框架(JdonFramework)应用系统
- 2013 CocoaChina微信精选之技术汇
- JavaScript内的类型转换
- Linux中文乱码-word-pdf字体转换问题处理
热门文章
- .net core 微服务_.NET 微服务实战之负载均衡(上)
- CR渲染器全景图如何渲染颜色通道_如何制作SSS材质
- HTML5图片怎么添加渐变,HTML5 canvas图和实现填充渐变形状
- c++ static 静态变量初始化
- pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换
- 131. Leetcode 191. 位1的个数 (位运算-汉明距离相关题目)
- Leetcode 455.分发饼干 (每日一题 20210708 同类型题)
- 二叉树的序列化和反序列化
- python programming training(三):搜索算法
- 深度学习基础知识(一): 概述-神经网络起源和发展