sqoop数据迁移
1简介
  sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。
  导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
  导出数据:从Hadoop的文件系统中导出数据到关系数据库

2工作机制
  将导入或导出命令翻译成mapreduce程序来实现
  在翻译出的mapreduce中主要是对inputformat和outputformat进行定制

3Sqoop的数据导入
  “导入工具”导入单个表从RDBMS到HDFS。表中的每一行被视为HDFS的记录。所有记录都存储为文本文件
  的文本数据(或者Avro、sequence文件等二进制数据)

4、语法
  下面的语法用于将数据导入HDFS。
    $ sqoop import (generic-args) (import-args)

5、导入表表数据到HDFS
  下面的命令用于从MySQL数据库服务器中的emp表导入HDFS。
  $bin/sqoop import \
  --connect jdbc:mysql://hdp-node-01:3306/test \
  --username root \
  --password root \
  --table emp --m 1

  为了验证在HDFS导入的数据,请使用以下命令查看导入的数据
  $ $HADOOP_HOME/bin/hadoop fs -cat /user/hadoop/emp/part-m-00000

  emp表的数据和字段之间用逗号(,)表示。
  1201, gopal, manager, 50000, TP
  1202, manisha, preader, 50000, TP
  1203, kalil, php dev, 30000, AC
  1204, prasanth, php dev, 30000, AC
  1205, kranthi, admin, 20000, TP

  导入关系表到HIVE
    bin/sqoop import --connect jdbc:mysql://hdp-node-01:3306/test
    --username root --password root --table emp --hive-import --m 1

  导入到HDFS指定目录
    在导入表数据到HDFS使用Sqoop导入工具,我们可以指定目标目录。
    以下是指定目标目录选项的Sqoop导入命令的语法。
    --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

  下面的命令是用来验证 /queryresult 目录中 emp_add表导入的数据形式。
  $HADOOP_HOME/bin/hadoop fs -cat /queryresult/part-m-*

  它会用逗号(,)分隔emp_add表的数据和字段。
  1201, 288A, vgiri, jublee
  1202, 108I, aoc, sec-bad
  1203, 144Z, pgutta, hyd
  1204, 78B, oldcity, sec-bad
  1205, 720C, hitech, sec-bad

  导入表数据子集

  增量导入

6、Sqoop的数据导出
  将数据从HDFS导出到RDBMS数据库
  导出前,目标表必须存在于目标数据库中。
  #默认操作是从将文件中的数据使用INSERT语句插入到表中
  #更新模式下,是生成UPDATE语句更新表数据
  语法
  以下是export命令语法。
    $ sqoop export (generic-args) (export-args)

  示例
    数据是在HDFS 中“EMP/”目录的emp_data文件中。所述emp_data如下:
    1201, gopal, manager, 50000, TP
    1202, manisha, preader, 50000, TP
    1203, kalil, php dev, 30000, AC
    1204, prasanth, php dev, 30000, AC
    1205, kranthi, admin, 20000, TP
    1206, satish p, grp des, 20000, GR

  1、首先需要手动创建mysql中的目标表
    $ mysql
    mysql> USE db;
    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 emp2 \
    --export-dir /user/hadoop/emp/

  3、验证表mysql命令行。
    mysql>select * from employee;
    如果给定的数据存储成功,那么可以找到数据在如下的employee表。

7、Sqoop的原理
  概述
    Sqoop的原理其实就是将导入导出命令转化为mapreduce程序来执行,sqoop在接收到命令后,都要生成mapreduce程序

    使用sqoop的代码生成工具可以方便查看到sqoop所生成的java代码,并可在此基础之上进行深入定制开发

Hadoop之Sqoop详解的更多相关文章

  1. 【转载】Hadoop历史服务器详解

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:过往记忆(http://www.iteblog.com/)     原文地址: ...

  2. hadoop hdfs uri详解

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  3. hadoop基础-SequenceFile详解

    hadoop基础-SequenceFile详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SequenceFile简介 1>.什么是SequenceFile 序列文件 ...

  4. Hadoop RPC机制详解

    网络通信模块是分布式系统中最底层的模块,他直接支撑了上层分布式环境下复杂的进程间通信逻辑,是所有分布式系统的基础.远程过程调用(RPC)是一种常用的分布式网络通信协议,他允许运行于一台计算机的程序调用 ...

  5. hadoop之mapreduce详解(进阶篇)

    上篇文章hadoop之mapreduce详解(基础篇)我们了解了mapreduce的执行过程和shuffle过程,本篇文章主要从mapreduce的组件和输入输出方面进行阐述. 一.mapreduce ...

  6. hadoop之yarn详解(框架进阶篇)

    前面在hadoop之yarn详解(基础架构篇)这篇文章提到了yarn的重要组件有ResourceManager,NodeManager,ApplicationMaster等,以及yarn调度作业的运行 ...

  7. Hadoop之WordCount详解

    花了好长时间查找资料理解.学习.总结 这应该是一篇比较全面的MapReduce之WordCount文章了 耐心看下去 1,创建本地文件 在hadoop-2.6.0文件夹下创建一个文件夹data,在其中 ...

  8. hadoop Shell命令详解

    调用文件系统(FS)Shell命令应使用bin/hadoop fs <args>的形式.所有的的FS shell命令使用URI路径作为参数.URI路径详解点击这里. 1.cat说明:将路径 ...

  9. hadoop之mapreduce详解(基础篇)

    本篇文章主要从mapreduce运行作业的过程,shuffle,以及mapreduce作业失败的容错几个方面进行详解. 一.mapreduce作业运行过程 1.1.mapreduce介绍 MapRed ...

随机推荐

  1. python学习笔记 序列化

    在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict: d = dict(name='Bob', age=20, score=88) 可以随时修改变量,比如把name改成'Bill',但 ...

  2. Makefile PHONY

    case 1: Makefile clean: rm a environment_1 : There is only file a $ make clean clean a environment_2 ...

  3. wscript运行js文件

    wscript运行js文件 http://www.cnblogs.com/jxgxy/archive/2013/09/20/3330818.html wscript运行js文件 wscript  ad ...

  4. crontab执行脚本失败问题

    如果脚本在终端执行正常,而在crontab里执行失败, 一般跟root用户无关,而是和系统变量有关,一般加上绝对路径执行java命令即可: /usr/java/jdk/bin/java xxx.jar

  5. java使用maven项目(二)分模块开发

    1       整合ssh框架 1.1     依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 1.2     依赖版本冲突的解决 1.  第 ...

  6. poj 1584(综合性强的计算几何,好题)

    A Round Peg in a Ground Hole Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6238   Acc ...

  7. Python 进阶 之 @property

    @property是一个装饰器,由Python原生库所支持,无需import @property 的作用是将函数变成属性,一般作用于类内的成员函数. 先贴个代码来描述一下@poperty存在的意义: ...

  8. Vuejs1.0学习

    1.数据双向绑定 双向绑定以后,表单中数据的改变会同步改变H2中的输出 2.v-show 内容输入前: 内容输入后:隐藏提示,展示按钮 代码实现: 此处的v-show可以换成v-if,v-show是隐 ...

  9. STL模板整理 vector

    一.什么是标准模板库(STL)? 1.C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板, ...

  10. Python_Tips[7] -> 偏函数

    偏函数 / Partial Function 使用偏函数可以对函数的部分预先知道的参数进行冻结,从而缓存函数参数,而在运行时再释放参数进行使用.所以偏函数适用于需要多次调用同样一个函数且其中一个参数固 ...