简介
Apache Sqoop(TM)是一种旨在有效地在Apache Hadoop和诸如关系数据库等结构化数据存储之间传输大量数据的工具。
原理
将导入或导出命令翻译成mapreduce程序来实现。
简单使用
导入数据
1、从RDBMS到HDFS
sqoop import \
--connect jdbc:mysql://192.168.10.*:3306/test1 \
--username root \
--password *** \
--table t29034_34aa047 \
--target-dir /data/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"
参数说明:
- target-dir:存放位置
- delete-target-dir:删除文件夹,存在的话会报错
- query:查询导入
- columns:指定列导入
- append:将数据追加到HDFS中已经存在的DataSet中,如果使用该参数,sqoop会把数据先导入到临时文件目录,再合并。
- check-column:作为增量导入判断的列名
- incremental:append或lastmodified
- last-value:指定某一个值,用于标记增量导入的位置
2、从RDMS到Hive
sqoop import \
--connect jdbc:mysql://192.168.10.*:3306/test1 \
--username root \
--password *** \
--table t29034_34aa047 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table company
导出数据
1、HIVE/HDFS到RDBMS
sqoop export \
--connect jdbc:mysql://192.168.10.*:3306/test1 \
--username root \
--password *** \
--export-dir /data/company \
--table t29034_34aa047_tmp \
--input-fields-terminated-by "\t"
注意:需要先创建表。
作业
1、作业创建
sqoop job --create jobname 导入/导出命令
2、查看所有作业
sqoop job --list
3、查看作业详情
sqoop job --show jobname
4、执行作业
sqoop job --exec jobname
定时作业调度
sh文件:
#!/bin/bash
sqoop job --exec job jobname > myjob.out 2>&1 &
脚本打包
使用opt格式的文件打包sqoop命令,然后执行。
执行脚本:
sqoop --options-file job_HDFS2RDBMS.opt