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. Launcher3无图标问题

    MTK8382/8121平台. 机器(8寸,默认竖屏)第一次烧录完成后,以横放姿势启动,发现Launcher没有图标,而竖屏启动是没有这个问题的.在测试过程中发现,在设置中clear data后也会有 ...

  2. Appium===Appium+Python API(转)

    Appium+python自动化8-Appium Python API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contex ...

  3. 智联招聘的python岗位数据词云制作

    # 根据传入的背景图片路径和词频字典.字体文件,生成指定名称的词云图片 def generate_word_cloud(img_bg_path, top_words_with_freq, font_p ...

  4. APMserv常见问题

    一.启动是提示apache启动失败,mysql启动成功 1.去掉ssl的勾选(勾选需要证书),重启看解决没有 2.端口被占,吧apache端口改成80或者8080端口(其他端口也可以试试,80的话访问 ...

  5. js 函数分类2

    js 通用监听函数实现 // 把所有方法封装到一个对象里面,充分考虑兼容写法 var EventUtil = { // 添加DOM事件 addEvent: function(element, type ...

  6. k8s的存储Volume

    1.Volume简介 我们经常会说:容器和 Pod 是短暂的.其含义是它们的生命周期可能很短,会被频繁地销毁和创建.容器销毁时,保存在容器内部文件系统中的数据都会被清除. 为了持久化保存容器的数据,可 ...

  7. poj 2007(凸包)

    Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8005   Accepted: 3798 ...

  8. [libgdx游戏开发教程]使用Libgdx进行游戏开发(8)-粒子系统

    没有美工的程序员,能够依赖的还有粒子系统. 这一章我们将使用libGDX的粒子系统线性插值以及其他的方法来增加一些特效. 你也可以使用自己编辑的粒子效果,比如这个粒子文件dust:http://fil ...

  9. python socket 连续send,出现粘包问题

    使用网上socket代码实现ssh功能,如下: server.py #服务端Linux系统下:处理命令并返回import socketimport os#声明类型,生成socket链接对象server ...

  10. python 去掉所有空白字符【解决】

    今天用python从access数据库读取内容,组合成sql语句时,空白字符把我给搞疯了.... 所幸找到了一个好办法: ''.join(s.split())