Hadoop数据传输工具sqoop - 样例
Hadoop数据传输工具sqoop
分类: 开源学习分享 Architecture hadoop 数据仓库 传输2013-03-24 19:22 8875人阅读 评论(2) 收藏 举报
Sqoop Hadoop 数据传输
目录(?)[+]
概述
sqoop是Apache顶级项目,主要用来在Hadoop和关系数据库中传递数据。通过sqoop,我们可以方便的将数据从关系数据库导入到HDFS,或者将数据从HDFS导出到关系数据库。
sqoop架构:
sqoop架构非常简单,其整合了Hive、Hbase和Oozie,通过map-reduce任务来传输数据,从而提供并发特性和容错。
sqoop的进一步发展可以参考:A New Generation of Data Transfer Tools for Hadoop: Sqoop 2
sqoop主要通过JDBC和关系数据库进行交互。理论上支持JDBC的database都可以使用sqoop和hdfs进行数据交互。
但是,只有一小部分经过sqoop官方测试,如下:
Database version --direct support connect string matches
HSQLDB 1.8.0+ No jdbc:hsqldb:*//
MySQL 5.0+ Yes jdbc:mysql://
Oracle 10.2.0+ No jdbc:oracle:*//
PostgreSQL 8.3+ Yes (import only)jdbc:postgresql://
较老的版本有可能也被支持,但未经过测试。
出于性能考虑,sqoop提供不同于JDBC的快速存取数据的机制,可以通过--direct使用。
以下基于sqoop-1.4.3
安装
sqoop安装使用可以参考http://www.54chen.com/java-ee/sqoop-mysql-to-hive.html,测试work
工具
sqoop包含一系列的工具,运行sqoop help可以查看相关帮助,
$ ./sqoop help
usage: sqoop COMMAND [ARGS]
Available commands:
codegen Generate code to interact with database records
create-hive-table Import a table definition into Hive
eval Evaluate a SQL statement and display the results
export Export an HDFS directory to a database table
help List available commands
import Import a table from a database to HDFS
import-all-tables Import tables from a database to HDFS
job Work with saved jobs
list-databases List available databases on a server
list-tables List available tables in a database
merge Merge results of incremental imports
metastore Run a standalone Sqoop metastore
version Display version information
See 'sqoop help COMMAND' for information on a specific command.
使用工具list-tables查看表,如下:
$ ./sqoop list-tables --connect jdbc:mysql://127.0.0.1/test --username root --password 123456
a
t1
可以使用codegen生成代码,但不执行map-reduce,如下:
$ ./sqoop codegen --connect jdbc:mysql://127.0.0.1/test --username root --password 123456 --table a --
class-name zxm_sqoop
......
13/03/21 21:02:01 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-work/compile/29864e3980ab5630b699e8e1e2145369/zxm_sqoop.jar
此处相关代码和java包可在 /tmp/sqoop-work/compile/29864e3980ab5630b699e8e1e2145369/找到
Import
sqoop 数据导入具有以下特点:
1.支持文本文件(--as-textfile)、avro(--as-avrodatafile)、SequenceFiles(--as-sequencefile)。 RCFILE暂未支持,默认为文本
2.支持数据追加,通过--apend指定
3.支持table列选取(--column),支持数据选取(--where),和--table一起使用
4.支持数据选取,例如读入多表join后的数据'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) ‘,不可以和--table同时使用
5.支持map数定制(-m)
6.支持压缩(--compress)
7.支持将关系数据库中的数据导入到Hive(--hive-import)、HBase(--hbase-table)
数据导入Hive分三步:1)导入数据到HDFS 2)Hive建表 3)使用“LOAD DATA INPAHT”将数据LOAD到表中
数据导入HBase分二部:1)导入数据到HDFS 2)调用HBase put操作逐行将数据写入表
*
示例:
mysql文件内容:
mysql> select * from a;
+------+--------+
| key1 | value1 |
+------+--------+
| 1 | a1 |
| 2 | a2 |
| 3 | a3 |
| 4 | a4 |
| 5 | a5 |
| 6 | a6 |
| 7 | a7 |
| 8 | a8 |
| 9 | a9 |
+------+--------+
编写文件a.conf,内容:
[html] view plaincopy
import
--append
-m
3
--connect
jdbc:mysql://127.0.0.1/test
--username
root
--password
123456
--table
a
--target-dir
/tmp/a
--columns
key1
--where
'key1>3'
运行:
$ ./sqoop --options-file a.conf
查看输出:
$ hadoop fs -ls /tmp/a/
Found 3 items
-rw-r--r-- 1 work supergroup 4 2013-03-21 23:08 /tmp/a/part-m-00000
-rw-r--r-- 1 work supergroup 4 2013-03-21 23:08 /tmp/a/part-m-00001
-rw-r--r-- 1 work supergroup 4 2013-03-21 23:08 /tmp/a/part-m-00002
==》3个文件对应3个mapper
$ hadoop fs -cat /tmp/a/*
4
5
6
7
8
9
Export
sqoop export 能将HDFS上的文件导出到关系数据库。其工作原理是根据用户指定的分隔符(字段分隔符:--fields-terminated-by)读入并解析数据,然后转换成insert/update语句导入数据到关系数据库。
其具有以下特点:
1. 支持将数据导出到表(--table)或者调用存储过程(--call)
2. 支持insert、update模式
3. 支持并发控制(-m)
实例:
$ hadoop fs -cat /tmp/b/*
1,a
2,b
3,c
$ ./sqoop export --connect jdbc:mysql://127.0.0.1/test --table b -username root -password 123456 --ex
port-dir /tmp/b
mysql> select * from b;
+------+--------+
| key1 | value1 |
+------+--------+
| 1 | a |
| 2 | b |
| 3 | c |
+------+--------+
出了上述提到的工具外,sqoop还提供了一些有意思的工具,例如sqoop job,有兴趣的同学可以研究下
其它:
1. 通过使用map-reduce,sqoop提供了良好的并发性和容错,可以作为异构数据库同步工具。
2. Sqoop虽然支持Hive、HBase,但并不完整,某些场景下数据传输后的加工不可避免
3. 大数据传输,也许可以使用--direct
转载于:https://blog.51cto.com/houjt/1601892
Hadoop数据传输工具sqoop - 样例相关推荐
- Hadoop和关系型数据库间的数据传输工具——Sqoop
Hadoop和关系型数据库间的数据传输工具--Sqoop 一.Sqoop简介以及使用 1.1.产生背景 基于传统关系型数据库的稳定性,还是有很多企业将数据存储在关系型数据库中:早期由于工具的缺乏,Ha ...
- 前端 PDFObject.embed预览PDF,另类方式隐藏工具条样例
<body> <div id="divid"></div> </body> <script > var filePath ...
- AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用
http://www.chedong.com/tech/awstats.html 你完全不必耐心看完所有内容:简要安装说明如下 安装 http://sourceforge.net/projects/a ...
- AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁)...
你完全不必耐心看完所有内容:简要安装说明如下 安装 http://sourceforge.net/projects/awstats/ 下载安装包后: GNU/Linux:tar zxf awstats ...
- AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁)
你完全不必耐心看完所有内容:简要安装说明如下 安装 http://sourceforge.net/projects/awstats/ 下载安装包后: GNU/Linux:tar zxf awstats ...
- 数据同步工具Sqoop
大数据Hadoop之--数据同步工具Sqoop Sqoop基本原理及常用方法 1 概述 Apache Sqoop(SQL-to-Hadoop)项目旨在协助RDBMS(Relational Databa ...
- 【计算机原理与接口技术(UNIX)⑰】——微型计算机系统的串行通信 [ 8250 + 具体样例 + 上机实验]
✅ 通过对 [计算机与UNIX汇编原理 ① ~ ⑫]的学习,我们已经大致掌握了汇编程序设计的相关知识 接下来,我将其分栏名改为 [计算机原理与接口技术(UNIX) ],重点将放在 "计算机原 ...
- 【大数据】大数据 Hadoop 管理工具 Apache Ambari(HDP)
文章目录 一.概述 二. Ambari 与 HDP 关系 三.Ambari 与 Cloudera manager 的对比 1)开源性 2)支持的发行版 3)用户界面 4)功能和扩展性 5)社区支持和生 ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- 【openfst样例1】Tokenization
Execise Data files 样例中需要的数据来源: http://www.openfst.org/twiki/bin/view/FST/FstExamples 如果无法访问,可以在这里下载 ...
最新文章
- 动态规划练习1--Unique Paths
- TCP和UDP的最完整的区别
- 深入理解WMS(二):Dialog与Toast源码解析
- Mysql数据库主从及主主复制配置演示
- 使用原生 Java 玩转验证码【含 DATA-URIS 介绍】
- WebSocket连接里客户端和服务器端的Socket ID
- ASP.NET Core MVC中的 [Required]与[BindRequired]
- .gitignore更新后如何生效
- Eclipse 模板使用
- 应坚刚《概率论》第一章重点习题解答
- 【echarts】使用 echarts 实现中国新冠疫情实时数据地图
- 3-10 统计输入字符串中的单词个数及单词的平均长度(高教社,《Python编程基础及应用》习题7-7)
- joda-time 文档的部分翻译
- 发现一个微博图床API和图片上传代码
- 小兔子在终端给大家拜年啦
- ps -aux详细解释
- 【C++】洛谷P1330 封锁阳光大学
- linker command failed with exit code 1 (use -v to see invocat)错误的处理方法
- python数据透视表计数去除重复_如何用Python实现数据透视表?解除你对透视表的疑惑!...
- QML类型:ApplicationWindow
热门文章
- Mutex(互斥锁)
- android 丢包率测试工具,android的ping的实现丢包率的获取
- 平衡二叉树(AVL Tree)
- Makefile中创建一个以当前时间为文件夹名的文件
- FFmpeg音视频同步的问题
- Linux下挂载和格式化虚拟磁盘图文教程
- 树莓派和Ubuntu16 一些软件的安装
- 小学计算机图形组合教案,小学三年级信息技术下册组合图形名师公开课优质教案人教版...
- 冒泡python代码_用Python写冒泡排序代码
- matlab怎么求rmse_从零开始的matlab学习笔记——(33)绘图工具栏