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. a标签里文本居中

    text-align:center; height: 30px; line-height:30px;

  2. SQL Server数据库优化笔记

    不定时更新 select DateDiff(month,'2018-06-07',GETDATE()) PACTBEGINDATE ORDER BY PACTBEGINDATE ASC),GETDAT ...

  3. [设计模式-行为型]观察者模式(Observer)

    一句话 事件监听就是观察者模式最好的例子. 概括

  4. selenium+python自动化82-只截某个元素的图【转载】

    前言 selenium截取全图小伙伴们都知道,曾经去面试的时候,面试官问:如何截图某个元素的图?不要全部的,只要某个元素...小编一下子傻眼了,苦心人,天不负,终于找到解决办法了. selenium截 ...

  5. Selenium2+python自动化31-生成测试报告【转载】

    前言 最近小伙伴们总有一些测试报告的问题,网上的一些资料生成报告的方法,我试了都不行,完全生成不了,不知道他们是怎么生成的,同样的代码,有待研究. 今天小编写一下可以生成测试报告的方法.个人觉得也是最 ...

  6. MySQL数据库中的Date,DateTime,int,TimeStamp和Time类型的对比

    DATETIME 用在你需要同时包含日期和时间信息的值时.MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00 ...

  7. spark技术热点问题互动问答

    决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第4期互动问答分享]  Q1:Spark SQL和Shark有啥区别? Shark需要依赖于Hadoop上Hive去做SQL语句的解析 ...

  8. NYOJ 6.喷水装置(一)-贪心

    喷水装置(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以 ...

  9. HDU 1236 排名(结构体+排序)

    今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑 每题的分值,所以并不是最后的排名.给定录取分数线,请你写程序找出最后通过分数线的 考生,并将他们的成绩按降序打 ...

  10. [Contest20180116]随机游走

    题意:给一棵树,多次询问$a$到$b$期望步数,每一步都是随机的 对期望DP了解更深入了一些 先预处理$up_x$表示从$x$走到$fa_x$的期望步数 可以直接往上走,也可以先去儿子再回来,设$x$ ...