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. 【HDU 5858】Hard problem(圆部分面积)

    边长是L的正方形,然后两个半径为L的圆弧和中间直径为L的圆相交.求阴影部分面积. 以中间圆心为原点,对角线为xy轴建立直角坐标系. 然后可以联立方程解出交点. 交点是$(\frac{\sqrt{7} ...

  2. bzoj1098 办公楼

    Description FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的电话号码.由于FGD的公司规模不断扩大,旧的办公楼已经显得十分狭窄,FGD决 ...

  3. 【转】linux下各文件夹的结构说明及用途介绍

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  4. Linux 服务器上快速配置阿里巴巴 OPSX NTP服务

    编辑文件 "/etc/ntp.conf",根据情况修改文件内容为: 互联网上的服务器: driftfile /var/lib/ntp/drift pidfile /var/run/ ...

  5. Spark记录-org.apache.spark.sql.hive.HiveContext与org.apache.spark.sql.SQLContext包api分析

    HiveContext/SQLContext val hiveContext=new HiveContext(new SparkContext(new SparkConf().setAppName(& ...

  6. WINDOWS控制界面操作命令for WIN10

    Windows系统:开始--运行--命令大全: cmd--------CMD命令提示符 cleanmgr-------垃圾整理 compmgmt.msc---计算机管理 conf----------- ...

  7. Git error: hint: Updates were rejected because the remote contains work that you do hint: not have locally

    hint: Updates were rejected because the remote contains work that you dohint: not have locally. This ...

  8. Sublime Text 2 绿化与汉化 [Windows篇]

    其实 ST3 已经出了很久了,可是我这个人恋旧,一直钟爱 ST2,所以就选择她了.最近我的 ST2 越来越卡,甚至有时候输入都会延迟1秒,所以打算自己搞个绿化版. 打开 Sublime Text 官网 ...

  9. Spring Mvc Web 配置拦截规则与访问静态资源 (三)

    拦截规则配置 1. *.do <!-- Processes application requests --> <servlet> <servlet-name>app ...

  10. 20155236 2016-2017-2 《Java程序设计》第八周学习总结

    20155236 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 通用API 日志 1.日志API简介:java.util.logging包中提供了日志功能相 ...