1、下载并解压
最新版下载地址http://ftp.wayne.edu/apache/sqoop/1.4.6/
2、修改配置文件
$ cd $SQOOP_HOME/conf
$ mv sqoop-env-template.sh sqoop-env.sh
打开sqoop-env.sh并编辑下面几行:
export HADOOP_COMMON_HOME=/home/hadoop/app/hadoop-2.6.1/
export HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop-2.6.1/
export HIVE_HOME=/home/hadoop/app/hive
3、加入mysql的jdbc驱动包
cp ~/app/hive/lib/mysql-connector-java-5.1.28.jar $SQOOP_HOME/lib/
验证启动
$ cd $SQOOP_HOME/bin
$ sqoop-version
预期的输出:
15/12/17 14:52:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
Sqoop 1.4.6 git commit id 5b34accaca7de251fc91161733f906af2eddbe83
Compiled by abe on Fri Aug 1 11:19:26 PDT 2015
到这里,整个 Sqoop 安装工作完成。
“导入工具”导入单个表从RDBMS到HDFS。表中的每一行被视为HDFS的记录。所有记录都存储为文本文件的文本数据(或者Avro、sequence文件等二进制数据)
语法
下面的语法用于将数据导入HDFS。
示例
表数据
这里直接用上次搭建的azkaban任务产出的数据表吧:
导入表表数据到HDFS
下面的命令用于从MySQL数据库服务器中的emp表导入HDFS。
$bin/sqoop import \
--connect jdbc:mysql://localhost:3306/azkaban \
--username root \
--password gome_search \
--table project_flows \
--m 1验证在HDFS导入的数据是否成功
导入到HDFS指定目录
在导入表数据到HDFS使用Sqoop导入工具,我们可以指定目标目录。
以下是指定目标目录选项的Sqoop导入命令的语法。
下面的命令是用来导入project_permissions 表数据到'/queryresult'目录。
导入表数据子集
我们可以导入表的使用Sqoop导入工具,"where"子句的一个子集。它执行在各自的数据库服务器相应的SQL查询,并将结果存储在HDFS的目标目录。
where子句的语法如下。
Sqoop的数据导出
将数据从HDFS导出到RDBMS数据库
导出前,目标表必须存在于目标数据库中。
- 默认操作是从将文件中的数据使用INSERT语句插入到表中
- 更新模式下,是生成UPDATE语句更新表数据
语法
以下是 export 命令语法示例
数据是在 HDFS 中 “/azkaban_demo/”目录的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, GR1、首先需要手动创建mysql中的目标表
CREATE TABLE employee (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20),
deg VARCHAR(20),
salary INT,
dept VARCHAR(10));2、然后执行导出命令
select * from employee;