准备
建表
假设在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工作流相关推荐

  1. 如何使用Hue上创建一个完整Oozie工作流

    1. 文档编写目的 在使用CDH集群中经常会有一些特定顺序的作业需要在集群中运行,对于需要多个作业顺序执行的情况下,如何能够方便的构建一个完整的工作流在CDH集群中执行,前面Fayson也讲过关于Hu ...

  2. Activiti基础02:手把手带你来创建一个Activiti工作流

    更多Java从0-1的笔记均在专栏中- Activiti基础01:从认识Activiti7开始,到环境配置 一.Activiti入门 在本章内容中,我们来创建一个Activiti工作流,并启动这个流程 ...

  3. 学习在Unity中创建一个动作RPG游戏

    游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...

  4. 学习用C#在Unity中创建一个2D Metroidvania游戏

    学习用C#在Unity中创建一个2D Metroidvania游戏 你会学到: 构建2D Unity游戏 用C#编程 玩家统计,水平提升,米尔和远程攻击 敌方人工智能系统 制定级别和级别选择 Lear ...

  5. 学会在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 ...

  6. 在windows中创建一个影子用户

    在windows中创建一个影子用户(看不到图请下载附件) 我们可以在windows操作系统中建立一个影子用户,也就是它是实际存在的,但是不会在登录时或者用户组中显示,我们可以赋予影子用户管理员权限,可 ...

  7. 如何在 Python 中创建一个简单的神经网络

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 引言 在过去的几十年里,机器学习对世界产生了巨大的影响,而且它的普 ...

  8. 基类和派生类写在一个文件中_BootISO:从 ISO 文件中创建一个可启动的 USB 设备...

    今天,我们将讨论名为 BootISO 的实用程序类似工具.它是一个简单的 bash 脚本,允许用户来从 ISO 文件中创建一个可启动的 USB 设备. -- Prakash Subramanian(作 ...

  9. 如何在Java中创建一个新的List

    本文翻译自:How to make a new List in Java We create a Set as: 我们创建一个Set为: Set myset = new HashSet() How d ...

最新文章

  1. Java并发编程71道面试题及答案
  2. error: default argument given for parameter 4
  3. 关于缓存的几篇好文章
  4. 学成在线--6.CMS页面管理开发(删除页面)
  5. 一步一步搭建hibernate4+ spring+ struts2
  6. 侣信即时通讯系统全新发布
  7. linux文件符数据,linux – 如何监视文件描述符以获得新数据的可用性?
  8. 181222每日一句
  9. 获取正在运行的termviewer id和密码
  10. 2019年,免费的检测僵尸粉软件《雪球微信小助手》,无打扰检测清理微信僵尸粉
  11. LimeSDR 中文教程 (三)
  12. 芝麻信用行业关注名单风险标签对照表SQL---福利大家!
  13. Racket 8.3下载安装(Win10)
  14. ubuntu独立显卡驱动
  15. softmax溢出问题
  16. 【已解决】Mac每次重启,谷歌Chrome都会丢失所有的扩展程序/extensions/插件
  17. Jdon框架(JdonFramework)应用系统
  18. 2013 CocoaChina微信精选之技术汇
  19. JavaScript内的类型转换
  20. Linux中文乱码-word-pdf字体转换问题处理

热门文章

  1. .net core 微服务_.NET 微服务实战之负载均衡(上)
  2. CR渲染器全景图如何渲染颜色通道_如何制作SSS材质
  3. HTML5图片怎么添加渐变,HTML5 canvas图和实现填充渐变形状
  4. c++ static 静态变量初始化
  5. pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换
  6. 131. Leetcode 191. 位1的个数 (位运算-汉明距离相关题目)
  7. Leetcode 455.分发饼干 (每日一题 20210708 同类型题)
  8. 二叉树的序列化和反序列化
  9. python programming training(三):搜索算法
  10. 深度学习基础知识(一): 概述-神经网络起源和发展