Hadoop之Sqoop详解
sqoop数据迁移
1、简介
	  sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。
	  导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
	  导出数据:从Hadoop的文件系统中导出数据到关系数据库
2、工作机制
	  将导入或导出命令翻译成mapreduce程序来实现
	  在翻译出的mapreduce中主要是对inputformat和outputformat进行定制
3、Sqoop的数据导入
	  “导入工具”导入单个表从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详解的更多相关文章
- 【转载】Hadoop历史服务器详解
		
免责声明: 本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除. 原文作者:过往记忆(http://www.iteblog.com/) 原文地址: ...
 - hadoop hdfs uri详解
		
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
 - hadoop基础-SequenceFile详解
		
hadoop基础-SequenceFile详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SequenceFile简介 1>.什么是SequenceFile 序列文件 ...
 - Hadoop RPC机制详解
		
网络通信模块是分布式系统中最底层的模块,他直接支撑了上层分布式环境下复杂的进程间通信逻辑,是所有分布式系统的基础.远程过程调用(RPC)是一种常用的分布式网络通信协议,他允许运行于一台计算机的程序调用 ...
 - hadoop之mapreduce详解(进阶篇)
		
上篇文章hadoop之mapreduce详解(基础篇)我们了解了mapreduce的执行过程和shuffle过程,本篇文章主要从mapreduce的组件和输入输出方面进行阐述. 一.mapreduce ...
 - hadoop之yarn详解(框架进阶篇)
		
前面在hadoop之yarn详解(基础架构篇)这篇文章提到了yarn的重要组件有ResourceManager,NodeManager,ApplicationMaster等,以及yarn调度作业的运行 ...
 - Hadoop之WordCount详解
		
花了好长时间查找资料理解.学习.总结 这应该是一篇比较全面的MapReduce之WordCount文章了 耐心看下去 1,创建本地文件 在hadoop-2.6.0文件夹下创建一个文件夹data,在其中 ...
 - hadoop Shell命令详解
		
调用文件系统(FS)Shell命令应使用bin/hadoop fs <args>的形式.所有的的FS shell命令使用URI路径作为参数.URI路径详解点击这里. 1.cat说明:将路径 ...
 - hadoop之mapreduce详解(基础篇)
		
本篇文章主要从mapreduce运行作业的过程,shuffle,以及mapreduce作业失败的容错几个方面进行详解. 一.mapreduce作业运行过程 1.1.mapreduce介绍 MapRed ...
 
随机推荐
- 【Shell 编程基础第一部分】第一个Shell脚本HelloShell及一些简单的Shell基础书写与概念;
			
http://blog.csdn.net/xiaominghimi/article/details/7603000 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...
 - android usb adb流程[转]
			
android adb 概述 android adb的代码分为两部分: kernel层的代码在如下路径: drivers/usb/gadget/f_adb.c drivers/usb/gadget/a ...
 - idea配置maven自动下载 源码和文档
			
勾上图中红框处,即可
 - MYSQL是什么?
			
#转载请联系 数据库主要分为两大类,关系型数据库和非关系型数据库.MYSQL是关系型数据库. 一.什么是关系型数据库呢? 1.关系型数据库,本质上是使用一张二维表来表示关系,和Excel表类似. 2. ...
 - mysql的一些工具(系统自带)
			
1.mysqld: 这个是mysqld服务器的主程序. 2.mysqld_safe: 这个是unix系统下,辅助mysql服务器启动的工具. 直接运行mysqld程序来启动MySQL服务的方法很少见, ...
 - python的加密算法(1):反转加密
			
说白了,就是把字符串倒序. 在js里,有一个reverse.但是python中没有. 不过,有一个更简单的方法,就是: ‘abcd’ [::-1] 这里,具体解释一下: (参看:https://doc ...
 - Linux下安装Sybase ASE 16
			
https://jingyan.baidu.com/article/414eccf67281a16b421f0a76.html
 - 【互动问答分享】第5期决胜云计算大数据时代Spark亚太研究院公益大讲堂
			
Spark亚太研究院100期公益大讲堂 [第5期互动问答分享] Q1:spark怎样支持即席,应该不是spark sql吧,是hive on spark么? Spark1.0 以前支持即席查询的技术是 ...
 - JS—正则表达式
			
正则表达式的元字符是包含特殊含义的字符,它们有一些特殊的功能,可以控制匹配模式的方式,反斜杠后的元字符失去其特殊含义. 单个字符和数字 .表示匹配除换行符外的单个字符,两个.就表示匹配两个字符 var ...
 - CF 1005A Tanya and Stairways 【STL】
			
Little girl Tanya climbs the stairs inside a multi-storey building. Every time Tanya climbs a stairw ...