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

  1. import

  2. --append

  3. -m

  4. 3

  5. --connect

  6. jdbc:mysql://127.0.0.1/test

  7. --username

  8. root

  9. --password

  10. 123456

  11. --table

  12. a

  13. --target-dir

  14. /tmp/a

  15. --columns

  16. key1

  17. --where

  18. '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 - 样例相关推荐

  1. Hadoop和关系型数据库间的数据传输工具——Sqoop

    Hadoop和关系型数据库间的数据传输工具--Sqoop 一.Sqoop简介以及使用 1.1.产生背景 基于传统关系型数据库的稳定性,还是有很多企业将数据存储在关系型数据库中:早期由于工具的缺乏,Ha ...

  2. 前端 PDFObject.embed预览PDF,另类方式隐藏工具条样例

    <body> <div id="divid"></div> </body> <script > var filePath ...

  3. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用

    http://www.chedong.com/tech/awstats.html 你完全不必耐心看完所有内容:简要安装说明如下 安装 http://sourceforge.net/projects/a ...

  4. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁)...

    你完全不必耐心看完所有内容:简要安装说明如下 安装 http://sourceforge.net/projects/awstats/ 下载安装包后: GNU/Linux:tar zxf awstats ...

  5. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁)

    你完全不必耐心看完所有内容:简要安装说明如下 安装 http://sourceforge.net/projects/awstats/ 下载安装包后: GNU/Linux:tar zxf awstats ...

  6. 数据同步工具Sqoop

    大数据Hadoop之--数据同步工具Sqoop Sqoop基本原理及常用方法 1 概述 Apache Sqoop(SQL-to-Hadoop)项目旨在协助RDBMS(Relational Databa ...

  7. 【计算机原理与接口技术(UNIX)⑰】——微型计算机系统的串行通信 [ 8250 + 具体样例 + 上机实验]

    ✅ 通过对 [计算机与UNIX汇编原理 ① ~ ⑫]的学习,我们已经大致掌握了汇编程序设计的相关知识 接下来,我将其分栏名改为 [计算机原理与接口技术(UNIX) ],重点将放在 "计算机原 ...

  8. 【大数据】大数据 Hadoop 管理工具 Apache Ambari(HDP)

    文章目录 一.概述 二. Ambari 与 HDP 关系 三.Ambari 与 Cloudera manager 的对比 1)开源性 2)支持的发行版 3)用户界面 4)功能和扩展性 5)社区支持和生 ...

  9. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  10. 【openfst样例1】Tokenization

    Execise Data files 样例中需要的数据来源: http://www.openfst.org/twiki/bin/view/FST/FstExamples 如果无法访问,可以在这里下载 ...

最新文章

  1. 动态规划练习1--Unique Paths
  2. TCP和UDP的最完整的区别
  3. 深入理解WMS(二):Dialog与Toast源码解析
  4. Mysql数据库主从及主主复制配置演示
  5. 使用原生 Java 玩转验证码【含 DATA-URIS 介绍】
  6. WebSocket连接里客户端和服务器端的Socket ID
  7. ASP.NET Core MVC中的 [Required]与[BindRequired]
  8. .gitignore更新后如何生效
  9. Eclipse 模板使用
  10. 应坚刚《概率论》第一章重点习题解答
  11. 【echarts】使用 echarts 实现中国新冠疫情实时数据地图
  12. 3-10 统计输入字符串中的单词个数及单词的平均长度(高教社,《Python编程基础及应用》习题7-7)
  13. joda-time 文档的部分翻译
  14. 发现一个微博图床API和图片上传代码
  15. 小兔子在终端给大家拜年啦
  16. ps -aux详细解释
  17. 【C++】洛谷P1330 封锁阳光大学
  18. linker command failed with exit code 1 (use -v to see invocat)错误的处理方法
  19. python数据透视表计数去除重复_如何用Python实现数据透视表?解除你对透视表的疑惑!...
  20. QML类型:ApplicationWindow

热门文章

  1. Mutex(互斥锁)
  2. android 丢包率测试工具,android的ping的实现丢包率的获取
  3. 平衡二叉树(AVL Tree)
  4. Makefile中创建一个以当前时间为文件夹名的文件
  5. FFmpeg音视频同步的问题
  6. Linux下挂载和格式化虚拟磁盘图文教程
  7. 树莓派和Ubuntu16 一些软件的安装
  8. 小学计算机图形组合教案,小学三年级信息技术下册组合图形名师公开课优质教案人教版...
  9. 冒泡python代码_用Python写冒泡排序代码
  10. matlab怎么求rmse_从零开始的matlab学习笔记——(33)绘图工具栏