sqoop 数据迁移

1 概述

  sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。

  导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统。

  导出数据:从Hadoop的文件系统中导出数据到关系数据库。

2 工作机制

  将导入或导出命令翻译成mapreduce程序来实现。

  在翻译出的mapreduce中主要是对inputformat和outputformat进行定制。

3 sqoop 安装

  安装sqoop的前提是已经具备java和hadoop的环境。

  3.1 下载并解压

     http://ftp.wayne.edu/apache/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

  3.2 修改配置文件 

$ cd $SQOOP_HOME/conf

$ mv sqoop-env-template.sh sqoop-env.sh

打开sqoop-env.sh并编辑下面几行:

export HADOOP_COMMON_HOME=/home/hadoop/apps/hadoop-2.6.1/

export HADOOP_MAPRED_HOME=/home/hadoop/apps/hadoop-2.6.1/

export HIVE_HOME=/home/hadoop/apps/hive-1.2.1

  3.3 加入mysql的jdbc驱动   

cp  ~/app/hive/lib/mysql-connector-java-5.1.28.jar   $SQOOP_HOME/lib/

  3.4 启动验证

$ cd $SQOOP_HOME/bin
$ sqoop-version

  输出:

  15/12/17 14:52:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6

  Sqoop 1.4.6 git commit id 5b34accaca7de251fc91161733f906af2eddbe83

  Compiled by abe on Fri Aug 1 11:19:26 PDT 2015

  到这里,整个Sqoop安装工作完成

4 数据导入

  4.1 下面的命令用于从MySQL数据库服务器中的emp表导入HDFS

$bin/sqoop import \
--connect jdbc:mysql://hdp-node-01:3306/test \
--username root \
--password root \
--table emp --m 1

  4.2 导入数据到HIVE

bin/sqoop import --connect jdbc:mysql://hdp-node-01:3306/test --username root --password root --table emp --hive-import --m 1

  4.3 导入到HDFS指定目录

--target-dir <new or exist directory in HDFS>

  下面的命令是用来导入emp_add表数据到'/queryresult'目录。

bin/sqoop import \
--connect jdbc:mysql://hdp-node-01:3306/test \
--username root \
--password root \
--target-dir /queryresult \
--table emp --m 1

  4.4 导入表数据子集

  我们可以导入表的使用Sqoop导入工具,"where"子句的一个子集。它执行在各自的数据库服务器相应的SQL查询,并将结果存储在HDFS的目标目录。

  where子句的语法如下。 

--where <condition>

  下面的命令用来导入emp_add表数据的子集。子集查询检索员工ID和地址,居住城市为:Secunderabad 

bin/sqoop import \
--connect jdbc:mysql://hdp-node-01:3306/test \
--username root \
--password root \
--where "city ='sec-bad'" \
--target-dir /wherequery \
--table emp_add --m 1

  4.5 增量导入

  增量导入是仅导入新添加的表中的行的技术。它需要添加‘incremental’, ‘check-column’, 和 ‘last-value’选项来执行增量导入。下面的语法用于Sqoop导入命令增量选项。  

--incremental <mode>
--check-column <column name>
--last value <last check column value>

  假设新添加的数据转换成emp表如下

  1206, satish p, grp des, 20000, GR

  下面的命令用于在EMP表执行增量导入

bin/sqoop import \
--connect jdbc:mysql://hdp-node-01:3306/test \
--username root \
--password root \
--table emp --m 1 \
--incremental append \
--check-column id \
--last-value 1205

5 数据导出

  将数据从HDFS导出到RDBMS数据库。

  导出前,目标表必须存在于目标数据库中。

  默认操作是从将文件中的数据使用INSERT语句插入到表中。

  更新模式下,是生成UPDATE语句更新表数据。

  语法: 

$ sqoop export (generic-args) (export-args) 

  5.1 将hdfs数据导出到mysql

    1)首先在mysql中创建目标表  

 CREATE TABLE employee (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20),
deg VARCHAR(20),
salary INT,
dept VARCHAR(10));

    2)执行导出命令 

bin/sqoop export \
--connect jdbc:mysql://hdp-node-01:3306/test \
--username root \
--password root \
--table employee \
--export-dir /user/hadoop/emp/

6 sqoop 作业

  6.1创建作业

    在这里,我们创建一个名为myjob,这可以从RDBMS表的数据导入到HDFS作业。  

bin/sqoop job --create myimportjob -- import --connect jdbc:mysql://hdp-node-01:3306/test --username root --password root --table emp --m 1

    该命令创建了一个从db库的employee表导入到HDFS文件的作业。

  6.2 验证作业(--list) 

$ sqoop job --list

  它显示了保存作业列表。

  Available jobs:

 myjob

  ‘--show’ 参数用于检查或验证特定的工作,及其详细信息  

$ sqoop job --show myjob

  6.3 执行作业

  ‘--exec’ 选项用于执行保存的作业。下面的命令用于执行保存的作业称为myjob。 

$ sqoop job --exec myjob

sqoop 数据迁移的更多相关文章

  1. 【Hadoop离线基础总结】Sqoop数据迁移

    目录 Sqoop介绍 概述 版本 Sqoop安装及使用 Sqoop安装 Sqoop数据导入 导入关系表到Hive已有表中 导入关系表到Hive(自动创建Hive表) 将关系表子集导入到HDFS中 sq ...

  2. sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)

    1:sqoop的概述: (1):sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具.(2):导入数据:MySQL,Oracle导入数据到Hadoop的HDFS.HIV ...

  3. sqoop数据迁移

    3.1 概述 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具. 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS.HIVE.HBASE等数据存储 ...

  4. 13_sqoop数据迁移概述

    3. sqoop数据迁移 3.1 概述 sqoop是apache旗下一款“Hadoop体系和关系数据库服务器之间传送数据”的工具. 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS. ...

  5. 分布式计算(二)使用Sqoop实现MySQL与HDFS数据迁移

    近期接触了一个需求,业务背景是需要将关系型数据库的数据传输至HDFS进行计算,计算完成后再将计算结果传输回关系型数据库.听到这个背景,脑海中就蹦出了Sqoop迁移工具,可以非常完美的支持上述场景. 当 ...

  6. 跨库数据迁移利器 —— Sqoop

    一.Sqoop 基本命令 1. 查看所有命令 # sqoop help 2. 查看某条命令的具体使用方法 # sqoop help 命令名 二.Sqoop 与 MySQL 1. 查询MySQL所有数据 ...

  7. 从零自学Hadoop(16):Hive数据导入导出,集群数据迁移上

    阅读目录 序 导入文件到Hive 将其他表的查询结果导入表 动态分区插入 将SQL语句的值插入到表中 模拟数据文件下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并 ...

  8. Oracle数据迁移至HBase操作记录

    Oracle数据迁移至HBase操作记录 @(HBase) 近期需要把Oracle数据库中的十几张表T级别的数据迁移至HBase中,过程中遇到了许多苦难和疑惑,在此记录一下希望能帮到一些有同样需求的兄 ...

  9. 从MySQL到Hive,数据迁移就这么简单

    使用Sqoop能够极大简化MySQL数据迁移至Hive之流程,并降低Hadoop处理分析任务时的难度. 先决条件:安装并运行有Sqoop与Hive的Hadoop环境.为了加快处理速度,我们还将使用Cl ...

随机推荐

  1. TTransport 概述

    TTransport TTransport主要作用是定义了IO读写操作以及本地缓存的操作,下面来看TIOStreamTransport是如何实现的. public abstract class TTr ...

  2. 验证码帮助类【CaptchaHelper 】

    GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中,使用GDI+处理二维(2D)的图形和图像,使用Direct ...

  3. PCA方法从原理到实现

    一.简介 PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,大家知道,我们在处理有关数字图像处理方面的问题时,比如经常用的图像的查询问题 ...

  4. 解决error possibly undefined macro AC_MSG_ERROR

    问题 出现如下缺少宏的问题 error: possibly undefined macro: AC_MSG_ERROR error: possibly undefined macro: AC_SUBS ...

  5. 求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N! N阶阶乘求和算法 JAVA C Python

    一行代码算出1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N!   N阶阶乘求和 时间复杂度为O(n) 空间复杂度为O(1) 对于任意正整数N  求1!-N!一行算出和给定求1 ...

  6. code#5 P3 我有矩阵,你有吗?

    我有矩阵,你有吗?   时间限制: 1.0 秒 空间限制: 128 MB 相关文件: 题目目录 题目描述 企鹅豆豆手里有两个 01 矩阵 A 和 B.他可以进行两种操作: 选择 A 矩阵的一行,然后把 ...

  7. es6 入坑笔记(二)---函数扩展,箭头函数,扩展运算符...

    函数扩展 1.函数可以有默认值 function demo( a = 10,b ){} 2.函数可以使用解构 function demo( { a = 0,b = 0 } = {} ){ } 3.函数 ...

  8. 偏前端 - ios下position:fixed失效的问题解决

    如图,考虑到用户体验的问题,一般页面的下方提交按钮都会随着固定在页面上,方便用户点击. 有些人肯定就说了,这还不简单,position:fixed: 但是在ios这个坑货系统上这个position:f ...

  9. colemak,你用了吗?

    为了输入代码的感觉更好,我学习了colemak键盘布局,这个布局它是在QWERTY的基础上改了10多个键. 开始的三天,感觉非常不好,每按一个键都要思考很长时间,干脆在网上找了个在线打字的网页去练,感 ...

  10. Maven plugin插件---appassembler-maven-plugin快速配置

    使用appassembler-maven-plugin 打包自定义目录 1.Pom中添加 <plugin> <artifactId>maven-resources-plugin ...