程序员人生 网站导航

Sqoop介绍及使用

栏目:服务器时间:2014-12-17 07:58:38

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

项目地址:http://sqoop.apache.org/

目前为止,已演变出了2个版本:sqoop1和sqoop2。

sqoop1的最新版本是1.4.5,sqoop2的最新版本是1.99.3;1.99.3和1.4.5是不兼容的,并且功能还没有开发完成,还不合适在生产环境部署。

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:/

guojian@localtest:~/work$ sudo apt-get install sqoop

guojian@localtest:~/work$ 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.

import是将关系数据库迁移到HDFS上

guojian@localtest:~/work$ sqoop import --connect jdbc:mysql://192.168.81.176/hivemeta2db --username root -password passwd --table sds

guojian@localtest:~/work$ hadoop fs -ls /user/guojian/sds
Found 5 items
-rw-r--r--   3 guojian cug_test          0 2014-09⑴1 16:04 /user/guojian/sds/_SUCCESS
-rw-r--r--   3 guojian cug_test        483 2014-09⑴1 16:03 /user/guojian/sds/part-m-00000.snappy
-rw-r--r--   3 guojian cug_test        504 2014-09⑴1 16:04 /user/guojian/sds/part-m-00001.snappy
-rw-r--r--   3 guojian cug_test       1001 2014-09⑴1 16:03 /user/guojian/sds/part-m-00002.snappy
-rw-r--r--   3 guojian cug_test        952 2014-09⑴1 16:03 /user/guojian/sds/part-m-00003.snappy

可以通过--m设置并行数据,即map的数据,决定文件的个数。

默许目录是/user/${user.name}/${tablename},可以通过--target-dir设置hdfs上的目标目录。

如果想要将全部数据库中的表全部导入到hdfs上,可使用import-all-tables命令。

sqoop import-all-tables

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐