Sqoop是用来实现结构型数据(如:关系型数据库RDBMS)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,
同时也借助MapReduce实现容错。

一、将MySQL中的表迁移到HDFS上(RDBMS —> HDFS)

  1. 导入MySQL"db_sqoop.mysql_emp表"所有数据到HDFS中;
    sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table mysql_emp \
    --target-dir /data/hdfs_sqoop \
    --delete-target-dir \
    --num-mappers 1 \
    --fields-terminated-by '\t'

    --table mysql中目标表;
    --target-dir hdfs存放目录;
    --delete-target-dir:若hdfs存放目录已存在,则自动删除;
    --num-mappers:指定maptask数量;
    --fields-terminated-by:各字段间的分隔符;

  2. 将MySQL的查询结果导入HDFS上;
    sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --target-dir /data/hdfs_sqoop \
    --delete-target-dir \
    --num-mappers 1 \
    --fields-terminated-by '\t' \
    --query 'SELECT emp_no,first_name,last_name FROM mysql_emp WHERE gender="M" and $CONDITIONS;'

    ”$CONDITIONS"表示将查询结果带回。

  3. 使用sqoop的关键字筛选查询后的结果导入到HDFS;
    sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table mysql_emp \
    --target-dir /data/hdfs_sqoop \
    --delete-target-dir \
    --num-mappers 1 \
    --fields-terminated-by '\t' \
    --where "gender='F'"
  4. 从MySQL导入指定’列’到HDFS上;
  5. sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table mysql_emp \
    --target-dir /data/hdfs_sqoop \
    --delete-target-dir \
    --num-mappers 1 \
    --fields-terminated-by '\t' \
    --columns emp_no,gender,birth_date

二、MySQL  ——>   Hive (RDBMS ——> HIVE)

  1. 将MySQL中的表导入Hive中;
    sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --num-mappers 1 \
    --table mysql_emp \
    --hive-import \
    --hive-table db_hive_sqoop.hive_emp \
    --fields-terminated-by '\t' \
    --hive-overwrite \
    --delete-target-dir

三、MySQL –> Hbase(RDBMS ——> Hbase)

  1. 将MySQL中的表导入Hbase中;
  2. sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table book \
    --columns "id,name,price" \
    --column-family "info" \
    --hbase-create-table \
    --hbase-row-key "id" \
    --hbase-table "hbase_book" \
    --num-mappers 1 \
    --split-by id

四、HDFS/Hive —> MySQL (HDFS/Hive —> RDBMS)

  1. 在MySQL中创建对应的表,然后使用如下语句;
  2. sqoop export \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table myqsl_dept \
    --num-mappers 1 \
    --export-dir /usr/hive/warehouse/db_hive_sqoop.db/hive_dept \
    --input-fields-terminated-by '\t'

五、导出MySQL表结构到hive

  1. 导出MySQL表结构;
    sqoop create-hive-table \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table mysql_stu \
    --hive-database db_hive_sqoop \
    --hive-table hive_stu

Sqoop迁移Hadoop与RDBMS间的数据的更多相关文章

  1. Sqoop -- 用于Hadoop与关系数据库间数据导入导出工作的工具

    Sqoop是一款开源的工具,主要用于在Hadoop相关存储(HDFS.Hive.HBase)与传统关系数据库(MySql.Oracle等)间进行数据传递工作.Sqoop最早是作为Hadoop的一个第三 ...

  2. Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递

    http://niuzhenxin.iteye.com/blog/1706203   Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...

  3. 阿里云 RDS实例间的数据迁移

    使用数据传输DTS可以实现两个RDS实例间的数据迁移.对于支持增量迁移的存储引擎,还可以使用DTS在源RDS实例不停服的情况下,将数据迁移到目标RDS实例.目前对于RDS不同存储引擎,只支持同构迁移( ...

  4. Hadoop基础之初识大数据与Hadoop

    前言 从今天起,我将一步一步的分享大数据相关的知识,其实很多程序员感觉大数据很难学,其实并不是你想象的这样,只要自己想学,还有什么难得呢? 学习Hadoop有一个8020原则,80%都是在不断的配置配 ...

  5. 关于Hadoop结合RDBMS应用的一些思考

    最近一段时间一直在从事和hadoop相关的工作,主要是技术内容学习.安装配置优化以及一些框架结构的设计.在此期间,我对于RDBMS和Hadoop的结合应用有了一些自己的看法,写出来大家共同探讨一下. ...

  6. hadoop集群间的hdfs文件拷贝

    1.背景 部门有个需求,在网络互通的情况下,把现有的hadoop集群(未做Kerberos认证,集群名为:bd-stg-hadoop)的一些hdfs文件拷贝到新的hadoop集群(做了Kerberos ...

  7. PHP+Hadoop+Hive+Thrift+Mysql实现数据统计分析

    原址:http://www.cnblogs.com/wicub/p/6094045.html   安装 Hadoop安装: http://www.powerxing.com/install-hadoo ...

  8. 小菜学习Winform(五)窗体间传递数据

    前言 做项目的时候,winfrom因为没有B/S的缓存机制,窗体间传递数据没有B/S页面传递数据那么方便,今天我们就说下winfrom中窗体传值的几种方式. 共有字段传递 共有字段传递实现起来很方便, ...

  9. View与Control间的数据交互

    View与Control间的数据交互 1.ViewBag.Name ="Name1" 2.ViewData["VD"] = "view data&qu ...

随机推荐

  1. kvm虚拟化之kvm虚拟机控制台登陆

    vm虚拟机能否像xen虚拟机一样通过virsh console 一样采用字符界面进行linux虚拟机控制台呢,答案是肯定的,默认情况下该命令是不起作用的,需要修改相关文件才能实现. 1. 配置方法如下 ...

  2. [Winter Vacation] 守护,守望

    最近总是堕落......想好了,不如在百无聊赖之时写一些心底的话,让它们最终不归于尘土吧. 有了想要守护一个人的信念与想法,然而有没有资格却还没有人能够说清楚,下断言.这可真是可悲了,总不能笃定着对方 ...

  3. 剑指offer面试题1---赋值运算符函数

    题目描述:如下类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString{public:    CMyString(char* pData = NULL);    C ...

  4. javap -- Java 类文件解析器

    参考文档 http://blog.chinaunix.net/uid-692788-id-2681132.html http://docs.oracle.com/javase/7/docs/techn ...

  5. 浅谈Android选项卡(一)

    选项卡,这样UI设计在很多方面都存在,window,web,ios,Android. 选项卡的主要作用,不用多介绍,可以在有线的空间内,显示出更多内容,同时也是操作起来也很方便.

  6. 数学 CF1068B LCM

    CF1068B LCM 给定一个正整数\(b (1\leq b \leq 10^{10})\). 把一个正整数a从1枚举到\(10^{18}\),求有多少种不同的\(\large \frac{[a,b ...

  7. P2300 合并神犇

    题目链接 题意分析 首先这道题不可以使用简单的贪心来做 根据\(DP\) 我们令\(dp[i]\)表示当前到了\(i\)一共做了\(dp[i]\)次合并 \(pre[i]\)表示当前合并到了\(i\) ...

  8. js中的substr和substring区别

    js中的substr和substring区别 Substring: 该方法可以有一个参数也可以有两个参数. (1)  一个参数: 示例: var str=“Olive”: str.substring( ...

  9. nodemon详解

    1.介绍 Nodemon是一个使用工具,它将会见监视源文件中任何的更改并自动重启服务器.Nodemon不会对你的代码产生额外的更改,它只是node命令的替代品.因为当你修改源文件后,如果你用的是原来的 ...

  10. CF1097D Makoto and a Blackboard(期望)

    [Luogu-CF1097D] 给定 \(n,k\)一共会进行 \(k\) 次操作 , 每次操作会把 \(n\) 等概率的变成 \(n\) 的某个约数 求操作 \(k\) 次后 \(n\) 的期望是多 ...