Extraction-Transformation-Loading的缩写,中文名称为数据提取、转换和加载。
将数据从ORACLE中抽取数据,经过hive进行分析转换,最后存放到ORACLE中去。

本案例是纯demo级别,练手使用

一、需求
将emp和dept表的数据分析最后存放到result表。

emp和dept表均为oracle自带的表,表结构如下:

emp表

EMPNO NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)

dept表

DEPTNO NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)

result表

EMPNO 员工号
ENAME 员工姓名
COMMN 津贴
DNAME 部门号

二、数据准备

创建hive表

create table emp_etl(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
)
row format delimited fields terminated by '\t' lines terminated by '\n'
stored as textfile; create table dept_etl(
deptno int,
dname string,
loc string
)
row format delimited fields terminated by '\t' lines terminated by '\n'
stored as textfile;
create table tmp_result_etl(
empno int,
ename string,
comm double,
dname string
)
row format delimited fields terminated by '\t' lines terminated by '\n'
stored as textfile; create table result_etl(
empno int,
ename string,
comm double,
dname string
)
row format delimited fields terminated by '\t' lines terminated by '\n'
stored as textfile;

导入hive数据

sqoop import --connect jdbc:oracle:thin:@192.168.1.107:1521/ORCL \
--username SCOTT --password TIGER \
--table EMP \
--hive-overwrite --hive-import --hive-table emp_etl \
--null-string '' --null-non-string '0' \
--fields-terminated-by '\t' --lines-terminated-by '\n' -m 3; sqoop import --connect jdbc:oracle:thin:@192.168.1.107:1521/ORCL \
--username SCOTT --password TIGER \
--table DEPT \
--hive-overwrite --hive-import --hive-table dept_etl \
--null-string '' --null-non-string '0' \
--fields-terminated-by '\t' --lines-terminated-by '\n' -m 3;

三、实现方式

在hive中分析处理,将结果导出到HDFS中,再使用SQOOP将HDFS结果导入到数据库。
1)抽取:ORACLE数据抽取到HIVE。参见前面两步。
2)转换:将查询结果插入到hive表中

INSERT OVERWRITE TABLE result_etl
select a.empno, a.ename, a.comm, b.dname FROM emp_etl a join dept_etl b on (a.deptno = b.deptno);

3)转换:将数据导入到HDFS文件系统中

INSERT OVERWRITE DIRECTORY 'RESULT_ETL_HIVE' SELECT * from result_etl;

4)加载:将HDFS系统中的数据加载到ORACLE中(结果表需要手工创建)

创建ORACLE表用于存放ETL结果

CREATE TABLE RESULT_ETL2(
empno INT,
ename VARCHAR(10),
COMM DOUBLE,
dname VARCHAR(14)
);
sqoop export --connect jdbc:oracle:thin:@192.168.1.107:1521/ORCL \
--username SCOTT --password TIGER \
--table RESULT_ETL2 \
--export-dir /user/hadoop/RESULT_ETL_HIVE \
--fields-terminated-by '\001' \
-m 2;

或者将所有的脚本(除ORACLE创建表外)放到shell文件中,一并执行

#!/bin/sh
. /etc/profile
set -x hql="INSERT OVERWRITE TABLE result_etl
select a.empno, a.ename, a.comm, b.dname FROM emp_etl a join dept_etl b on (a.deptno = b.deptno) "
hive -e "$hql" sqoop export --connect jdbc:oracle:thin:@192.168.1.107:1521/ORCL \
--username SCOTT --password TIGER \
--table RESULT_ETL2 \
--export-dir /user/hadoop/RESULT_ETL_HIVE \
--fields-terminated-by '\001' \
-m 2;

sqoop操作之ETL小案例的更多相关文章

  1. [jQuery学习系列六]6-jQuery实际操作小案例

    前言最后在这里po上jQuery的几个小案例. Jquery例子1_占位符使用需求: 点击第一个按钮后 自动去check 后面是否有按钮没有选中, 如有则提示错误消息. <html> &l ...

  2. JavaScript apply函数小案例

    //回调函数1 function callback(a,b,c) { alert(a+b+c); } //回调函数2 function callback2(a,b) { alert(a+b); } / ...

  3. MVC 小案例 -- 信息管理

    前几次更新博客都是每次周日晚上到周一,这次是周一晚上开始写,肯定也是有原因的!那就是我的 Tomact 忽然报错,无法启动,错误信息如下!同时我的 win10 也崩了,重启之后连 WIFI 的标志也不 ...

  4. Oracle定时任务小案例

    需求简述 一个数据表中包含此数据的录入时间,此数据的初始状态是有效,五天后系统自动置该数据的状态为无效. 方案 写一个存储过程,用于更新字段(改状态): 写一个job,用于定时执行存储过程: 方案逻辑 ...

  5. JSP +MySQL实现网站的登录与注册小案例

    为了练手,我就自己试着做了一个网站的登录与注册的小案例.由于没有做美化处理,所以界面并不是很好看. 网站实现的功能如下: 用户首次注册功能 用户登录功能 项目目录展示: 下面我将会分模块展示 注册模块 ...

  6. 8天入门docker系列 —— 第五天 使用aspnetcore小案例熟悉容器互联和docker-compose一键部署

    这一篇继续完善webnotebook,如果你读过上一篇的内容,你应该知道怎么去挂载webnotebook日志和容器的远程访问,但是这些还远不够,webnotebook 总要和一些数据库打交道吧,比如说 ...

  7. (24/24) webpack小案例--自己动手用webpack构建一个React的开发环境

    通过前面的学习,对webpack有了更深的认识,故此节我们就利用前面相关知识自己动手用webpack构建一个React的开发环境,就算是一个小案例吧. 注:此处使用的开发工具是Webstorm. 1. ...

  8. node.js(小案例)_实现学生信息增删改

    一.前言 本节内容主要对小案例做一个总结: 1.如何开始搭建小项目 2.路由设计 3.模块应用 4.项目源码以及实现过程github地址: 项目演示如下: 二.主要内容 1.项目的关键性js源码: 项 ...

  9. WEB 小案例 -- 网上书城(四)

    针对于这个小案例我们今天讲解结账操作,也是有关这个案例的最后一次博文,说实话这个案例的博文写的很糟糕,不知道该如何去表述自己的思路,所以内容有点水,其实说到底还是功力不够. 处理思路 点击结账,发送结 ...

随机推荐

  1. C#并行开发_Thread/ThreadPool, Task/TaskFactory, Parallel

    大家好,本次讨论的是C#中的并行开发,给力吧,随着并行的概念深入,哥也赶上这个潮流了,其实之前讨论C#的异步调用或者C#中BeginInvoke或者Invoke都已经涉及了部分本篇的内容. 参考书目: ...

  2. Maven学习- 使用Maven构建Web项目

    从网上查了一些资料,才算明白(也就是怎么操作吧),怎么使用Maven构建一个Web项目,找到一篇文档,主要都是从这里学到的: 下载地址:使用Eclipse构建Maven的Web项目.docx 现自己在 ...

  3. jvm 方法区

    方法区在一个jvm实例的内部,类型信息被存储在一个称为方法区的内存逻辑区中.类型信息是由类加载器在类加载时从类文件中提取出来的.类(静态)变量也存储在方法区中. jvm实现的设计者决定了类型信息的内部 ...

  4. shell 脚本实战笔记(4)--linux磁盘分区重新挂载

    背景: Hadoop的HDFS文件系统的挂载, 默认指定的文件目录是/mnt/disk{N}. 当运维人员, 不小心把磁盘挂载于其他目录, 比如/mnt/data, /mnt/disk01, /mnt ...

  5. utf-8编码的csv文件,用excel打开乱码,解决办法,在输出前加 0xEF,0xBB,0xBF三个char

    转自 http://blog.csdn.net/zcmssd/article/details/6086649 是由于输出的CSV文件中没有BOM. 什么是BOM? 在UCS 编码中有一个叫做”ZERO ...

  6. Mysql隔离级别 sql示例理解

    前言 事务要解决的是多线程并发修改数据库的问题.Mysql innodb 引擎支持事务.类似 Java 中的各种锁,例如乐观锁(CAS),读写锁,悲观锁.事务也有很多级别. 每个隔离级别要解决的问题都 ...

  7. windows dos命令

    dos命令配置环境变量: path=%path%;D:\Installed software\Professional software\Python27   (https://www.cnblogs ...

  8. Sort An Unsorted Stack

    Given a stack of integers, sort it in ascending order using another temporary stack. Examples: Input ...

  9. (精)字符串,map -> json对象->map(初学者必读)

    import java.util.LinkedList; import java.util.*; import java.util.ListIterator; import net.sf.json.J ...

  10. socat 广播以及多播

    官方文档有一个关于组播,多播的例子挺不错,记录下 多播客户端以及服务器 注意地址修改为自己的网络 server socat UDP4-RECVFROM:6666,ip-add-membership=2 ...