sqoop介绍

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

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

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

sqoop工作机制

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

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

sqoop安装

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

1、下载,解压到/usr/local/目录下,重命名为sqoop

2、修改配置文件$SQOOP_HOME/conf

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

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

    export HADOOP_COMMON_HOME=/usr/local/hadoop/

   export HADOOP_MAPRED_HOME=/usr/local/hadoop/

   export HIVE_HOME=/usr/local/hive

3、将MySQL的jdbc驱动包添加到sqoop/lib/目录下

注意:

后面在sqoop中进行数据导入导出的时候,会出现很多错误:

java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@1d5a7f6 is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.

ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter

这些错误都是$SQOOP_HOME/lib/中导入的jdbc驱动包版本低造成的,换个高版本的就OK了。

4、验证启动

$SQOOP_HOME/bin

$sqoop-version

三个警告,不用管。到这里,整个sqoop安装就完成了。

Sqoop的数据导入

1、导入表数据到HDFS

在mysql中有一个库userdb中三个表:emp, emp_add和emp_conn

id

name

deg

salary

dept

1201

gopal

manager

50,000

TP

1202

manisha

Proof reader

50,000

TP

1203

khalil

php dev

30,000

AC

1204

prasanth

php dev

30,000

AC

1205

kranthi

admin

20,000

TP

id

hno

street

city

1201

288A

vgiri

jublee

1202

108I

aoc

sec-bad

1203

144Z

pgutta

hyd

1204

78B

old city

sec-bad

1205

720X

hitec

sec-bad

id

phno

email

1201

2356742

gopal@tp.com

1202

1661663

manisha@tp.com

1203

8887776

khalil@ac.com

1204

9988774

prasanth@ac.com

1205

1231231

kranthi@tp.com

$bin/sqoop import   \

--connect jdbc:mysql://hadoop1:3306/userdb   \mysql中数据库的名字

--username root  \

--password admin   \

--table emp   \userdb下的emp表,可以通过第三方工具创建

--m 1    运行MapReduce的数量

2、导入关系表到hive

bin/sqoop import --connect jdbc:mysql://hadoop1:3306/userdb --username root --password admin --table emp --hive-import --m 1

3、导入到HDFS指定目录

bin/sqoop import \

--connect jdbc:mysql://hadoop1:3306/userdb \

--username root \

--password admin \

--target-dir /queryresult \

--table emp_add

--m 1

4、导入表数据子集

bin/sqoop import \

--connect jdbc:mysql://hadoop1:3306/userdb \

--username root \

--password admin \

--where "city ='sec-bad'" \

--target-dir /wherequery \

--table emp_add

--m 1

5、增量导入

增量导入是仅导入新添加的表中的行的技术

它需要添加‘incremental’, ‘check-column’, 和 ‘last-value’选项来执行增量导入。

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

1206, satish p, grp des, 20000, GR

bin/sqoop import \

--connect jdbc:mysql://hadoop1:3306/userdb \

--username root \

--password admin \

--table emp

--m 1 \

--incremental append \

--check-column id \

--last-value 1205      上次表中最后一行的id,这个id以后的就是新增的!

sqoop的数据导出

首先确保hdfs中有所要导出的数据存在!!!

1、首先需要手动创建mysql中的目标表

$ mysql

mysql> USE userdb;

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://hadoop1:3306/userdb \

--username root \

--password admin \

--table employee \

--export-dir /user/root/emp/   位于hdfs中的要导出的数据路径

3、验证表mysql命令行。

sqoop1.4.6数据迁移的更多相关文章

  1. sqoop 数据迁移

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

  2. 【SQLServer】记一次数据迁移-标识重复的简单处理

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 今天在数据迁移的时候因为手贱遇到一个坑爹问题,发来大家乐乐,也传授新手点经验 迁移惯用就 ...

  3. Entity Framework Code First Migrations--EF 的数据迁移

    1. 为了演示方便,首先新建一个控制台项目,然后添加对entityframework的引用 使用nuget控制台执行: Install-Package EntityFramework 2.新建一个实体 ...

  4. mssql与mysql 数据迁移

    概要: mssql向mysql迁移的实例,所要用到的工具bcp和load data local infile. 由于订单记录的数据是存放在mssql服务器上的,而项目需求把数据迁移到mysql ser ...

  5. 重置EntityFramework数据迁移到洁净状态

    前言 翻译一篇有关EF数据迁移的文章,以备日后所用,文章若有翻译不当的地方请指出,将就点看,废话少说,看话题.[注意]:文章非一字一句的翻译,就重要的问题进行解释并解决. 话题引入 无法确定这种场景是 ...

  6. MySQL数据迁移到SQL Server

    数据迁移的工具有很多,基本SSMA团队已经考虑到其他数据库到SQL Server迁移的需求了,所以已经开发了相关的迁移工具来支持. 此博客主要介绍MySQL到SQL Server数据迁移的工具:SQL ...

  7. MySQL数据迁移到MSSQL-以小米数据库为例-测试828W最快可达到2分11秒

    这里采用.NET Framework 4.0以上版本中新出现的 ConcurrentQueue<T> 类 MSDN是这样描述的: ConcurrentQueue<T> 类是一个 ...

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

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

  9. 从零自学Hadoop(17):Hive数据导入导出,集群数据迁移下

    阅读目录 序 将查询的结果写入文件系统 集群数据迁移一 集群数据迁移二 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephis ...

随机推荐

  1. 【洛谷P1119】灾后重建

    题目大意:给定一个 N 个顶点,M 条边的无向图,每个顶点有一个时间戳,且时间戳大小按照顶点下标大小依次递增,在给定时间 t 时,时间戳严格大于 t 的顶点不能被访问,现在有 Q 次询问,每次询问在给 ...

  2. C# 获取IIS站点及虚拟目录信息

    using System; using System.DirectoryServices; using System.Collections.Generic; using System.Text; n ...

  3. EasyUI实战篇之datagrid:如何重新设置datagrid所配置的属性(options)并重新查询列表(relaod)

    http://www.stepday.com/topic/?873 今天在使用EasyUI的datagrid列表组件想实现一个列表的展现,且列表上方有搜索条件,初始化的时候我是这样配置的: 1.< ...

  4. 样本服从正态分布,证明样本容量n乘样本方差与总体方差之比服从卡方分布x^2(n)

    样本服从正态分布,证明样本容量n乘样本方差与总体方差之比服从卡方分布x^2(n) 正态分布的n阶中心矩参见: http://www.doc88.com/p-334742692198.html

  5. spring task 实现定时执行(补充:解决定时任务执行2次问题)

    首先在spring-mvc.xml配置头文件引入: xmlns:task="http://www.springframework.org/schema/task" 其次引入task ...

  6. SQL2005分页存储过程(支持多表联接)

    Code /*********************************************************   * 作    用:数据分页(完整SQL分页存储过程(支持多表联接)) ...

  7. Spark记录-Scala循环语句

    Scala while循环语句 当给定条件为真时,while循环重复一个语句或一组语句.它在执行循环体之前测试条件状态. 只要给定的条件为真,while循环语句重复执行目标语句. object Dem ...

  8. SQL记录-PLSQL-EXIT/CONTINUE/GOTO

    PL/SQL EXIT语句   在PL/SQL编程语言中,EXIT语句有以下两种用法: 当循环中遇到EXIT语句循环立即终止,程序控制继续下一个循环语句后面. 如果使用嵌套循环(即一个循环内的另一个循 ...

  9. Struts2_day02

    一.内容大纲 1 结果页面配置 (1)全局结果页面 (2)局部结果页面 - 配置全局也配置局部,最终局部为准 (3)result标签type属性 - 默认值 dispatcher做转发 - redir ...

  10. alloffthelights使用方法

    官网上的demo没有用,因为官网用的jquery是谷歌的CDN,download下来的demo也没有用,因为demo的路径下少了jquery.所以自己写demo的时候要把jquery和alloffth ...