一、前述
今天开始讲解Sqoo的用法搭建和使用。Sqoop其实功能非常简单。主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
二、 配置
flume配置很简单:
第一步:将flume-env.sh.template模板文件改名为flume-env.sh文件
第二步 :更改里面的JAVA_HOME
第三步:配置环境变量
三、 使用
官方参考手册:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_connecting_to_a_database_server
举几个简单例子:
导入:
案例一(步骤是Mysql---HDFS)的顺序):
import
--connect
jdbc:mysql://node3:3306/test
--username
root
--password
123
--as-textfile
--columns
id,name,msg
--table
psn
--delete-target-dir
--target-dir
/sqoop/data
-m
1
可以将上述命令定义在一个脚本里面:
使用如下命令:
sqoop --options-file sqoop1
案例二(步骤是Mysql---Hive)的顺序):实际上就是Mysql-HDFS-Hive里面
import
--connect
jdbc:mysql://node3/test
--username
root
--password
123
--as-textfile
--query
'select id, name, msg from psn where id like "1%" and $CONDITIONS'
--delete-target-dir
--target-dir
/sqoop/tmp
-m
1
--hive-home
/home/hive-1.2.1
--hive-import
--create-hive-table
--hive-table
t_test
PS:先导入到hdfs上的一个临时目录,然后再导入到Hive的数据管理目录/home/hive-1.2.1。
and $CONDITIONS是一个查询规则,必须加上。
导出:
案例一。将HDFS上的数据导出到Mysql中去
export
--connect
jdbc:mysql://node3/test
--username
root
--password
123
-m
1
--columns
id,name,msg
--export-dir
/sqoop/data
--table
h_psn