一、Sqoop简介[1.4.6版本]
------------------------------------------------------------
1.RDBMS 和 HDFS之间进行数据导入导出的工具
2.将导入或导出命令翻译成 MapReduce 程序来实现 在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定制
3.sqoop就是一个工具, 只需要在一个节点上进行安装即可。
二、Sqoop的安装和配置
---------------------------------------------------------------
1.下载1.4.6版本(1.997版本BUG太多)
2.tar开,配置环境变量
SQOOP_HOME=/soft/sqoop
...
3.配置sqoop/conf/sqoop-env.sh
$> cd $SQOOP_HOME/conf
$> cp sqoop-env-template.sh sqoop-env.sh
$> nano sqoop-env.sh
添加如下内容
export HADOOP_COMMON_HOME=/soft/hadoop
export HADOOP_MAPRED_HOME=/soft/hadoop
export HBASE_HOME=/soft/hbase
export HIVE_HOME=/soft/hive
export ZOOCFGDIR=/soft/zookeeper/conf
4.复制mysql驱动到/soft/sqoop/lib
复制jar包到sqoop/tools/lib下
$> cp mysql-connector-java-5.1.17.jar /soft/sqoop/lib/
5.验证sqoop的安装
$> sqoop-version
6.查看帮助
$> sqoop help
$> sqoop help import
三、MySQL数据的导入导出到HDFS
---------------------------------------------------
1.将MySQL中的单个表导入到HDFS中
$ sqoop import \
--connect jdbc:mysql://192.168.43.1:3306/mydata \
--driver com.mysql.jdbc.Driver \
--username mysql \
--password mysql \
--table mytable \
--m 1 \
--target-dir /data/sqoop/expdata \
--where "id > 1" \
--incremental append \
--check-column id \
--last value 1205 \
2.将MySQL指定库中的所有表导入到HDFS中[不指定表名,直到导出到hdfs根目录下]
$ sqoop import-all-tables \
--connect jdbc:mysql://192.168.43.1:3306/mydata \
--driver com.mysql.jdbc.Driver \
--username mysql \
--password mysql \
3.将HDFS的表导出到MySQL
a.MySql中创建相似的表
mysql> create table mytable_bak like mytable;
b.导出
$> sqoop export \
--connect jdbc:mysql://192.168.43.1:3306/mydata \
--username mysql \
--password mysql \
--table mytable_bak \
--export-dir /data/sqoop/expdata
四、MySQL数据导入到Hive
--------------------------------------------------------
1.导入--- 将MySQL中mydata库下的mytable_bak表,导入到Hive的mydb2.mytable_bak1中
$> sqoop import \
--connect jdbc:mysql://192.168.43.1:3306/mydata \
--driver com.mysql.jdbc.Driver \
--username mysql \
--password mysql \
--table mytable_bak \
--hive-import \
--hive-overwrite \
--hive-table mydb2.mytable_bak1 \
五、MySQL数据导入到HBase
------------------------------------------------------------
1.导入--将MySQL中mydata库下的mytable_bak表,导入到Hbase的mytable_bak1中[注意先后顺序,而且ns1:mytable_bak1,用的是: ]
sqoop import \
--connect jdbc:mysql://192.168.43.1:3306/mydata \
--driver com.mysql.jdbc.Driver \
--username 'mysql' \
--password 'mysql' \
--table 'mytable_bak' \
--hbase-table 'ns1:mytable_bak1' \
--hbase-row-key 'id' \
--column-family 'f1' \
六、Sqoop Job -- 导入导出过程的封装,方便以后导入导出
------------------------------------------------------------
1.创建作业
sqoop job --create myjob -- import \
[下面就是之前的导入语句]
--connect jdbc:mysql://192.168.43.1:3306/mydata \
--driver com.mysql.jdbc.Driver \
--username 'mysql' \
--password 'mysql' \
--table 'mytable_bak' \
--hbase-table 'ns1:mytable_bak1' \
--hbase-row-key 'id' \
--column-family 'f1' \
2.查看创建的作业
sqoop job --list
sqoop job --show myjob
3.启动作业
sqoop job --exec myjob
4.删除作业
sqoop job --delete myjob
七、增量导入
---------------------------------------------------------
1.参数
--incremental //增量类型,append/lastmodified
--check-column //指定检查字段,不能为varchar
--last value //之前导入的最大值
2.增量导入id 大于55的数据
sqoop import \
--connect jdbc:mysql://192.168.43.1:3306/mydata \
--driver com.mysql.jdbc.Driver \
--username 'mysql' \
--password 'mysql' \
--table 'mytable_bak' \
--hbase-table 'ns1:mytable_bak1' \
--hbase-row-key 'id' \
--column-family 'f1' \
--incremental append \
--check-column id \
--last-value 5 \
大数据之Sqoop(一) --- Sqoop简介,安装和配置,MySQL数据的导入导出到HDFS,Hive,HBase,Sqoop Job,增量导入
最新推荐文章于 2025-03-15 11:11:26 发布
本文详细介绍Sqoop 1.4.6版本的安装配置及使用方法,包括从MySQL导入数据到HDFS、Hive和HBase,以及从HDFS导出数据到MySQL的过程。同时,文章还介绍了如何创建Sqoop作业进行数据的批量迁移,以及如何实现数据的增量导入。

4183

被折叠的 条评论
为什么被折叠?



