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. windows、linux互传文件

    2.常用的为上传下载 1).get 从远程服务器上下载一个文件存放到本地,如下: 先通过lcd切换到本地那个目录下,然后通过get file >> lcd d:\            # ...

  2. [19/04/30-星期二] GOF23_行为型模式(中介者模式、命令模式、解释器模式、访问者模式)

    一.中介者模式(meditor) [中介] /*** * 抽象中介者接口和其具体实现类"经理"类 */ package cn.sxt.meditor; import java.ut ...

  3. 【CSS3】自定义滚动条样式 -webkit-scrollbar

    好文推荐:http://m.blog.csdn.net/article/details?id=40398177 http://www.xuanfengge.com/css3-webkit-scroll ...

  4. 2、Web Service-术语

    1.Java中的Web Service规范 三种规范:JAXM&SAAJ.JAX-WS(JAX-RPC).JAX-RS. 三要素:soap,wsdl,uddi 1. Jaxws(掌握) JAX ...

  5. EF和linq to sql 关系

    LINQ to SQL 允许你用任何类来代表数据库中的数据.表.同样的,EF也允许你用任何类来代表苏据库中的数据.表. 所不同的的地方是Linq to sql 用这些被修饰过的类直接同数据库打交道,存 ...

  6. Monkeyrunner测试小实践

    环境搭建完成后,我们通过命令打开模拟器,前提是在Eclipse中创建了一个模拟器 (1)cmd命令:emulator -avd 模拟器名称 启动了模拟器,此时你就会看到一个安卓模拟器的弹出 (2)cm ...

  7. 【转】Spring+Mybatis+SpringMVC+Maven+MySql搭建实例

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何使用Maven来搭建Spring+Mybatis+SpringMVC+M ...

  8. Android 配置文件 AndroidManifest 解析

    1.屏幕分辨率 <supports-screens android:smallScreens="true" android:normalScreens="true& ...

  9. UVALive - 2515 (最小生成树 kruskal)

    You are assigned to design network connections between certain points in a wide area. You are given ...

  10. 有关集合的foreach循环里的add/remove

    转自:Hollis(微信号:hollischuang) 在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. 1 .foreach循环 ...