Sqoop入门

Posted by Kaka Blog on December 26, 2019

简介

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

参考资料