Sqoop工具

简介

SQOOP是用于对数据进行导入导出的。
(1)把MySQL、Oracle等数据库中的数据导入到HDFS、Hive、HBase中
(2)把HDFS、Hive、HBase中的数据导出到MySQL、Oracle等数据库中

安装sqoop

1.解压sqoop

tar -zxvf sqoop-1.4.3.bin_hadoop-1.0.0.tar.gz

2.重命名

mv sqoop-1.4.3.bin_hadoop-1.0.0 sqoop

3.设置环境变量

vi /etc/profile
export SQOOP_HOME=/usr/local/sqoop

将$SQOOP_HOME/bin 添加到 PATH 中

source /etc/profile

完毕!

把mysql数据导入到hdfs或者hive中

我们主要使用的是sqoop脚本。
注:因为要连接mysql 所以需要jdbc驱动

把数据从mysql导入到hdfs(默认是/user/username)中:

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t'
--null-string ‘**’

表示对于null值使用**代替 默认使用NULL ‘- -’不能使用,专有字符

Sqoop在导入时,使用4个MapReduce并行执行 ,可以指定一个如下:

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1

hdfs不可以多次写入,解决办法:

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1 --append

也可以导入到hive中,但前提是删除 /user/root/目录下内容:

hadoop fs -rmr /user/root/*

因为在执行导入后,会再次在/user/root下生成 sqoop文件

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1 --append --hive-import

导入增量:

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1 --append --hive-import --check-column 'TBL_ID' --incremental append --last-value 6

避免每次麻烦输出很长的命令,创建job:

sqoop job --create myjob -- import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1 --append --hive-import --check-column 'TBL_ID' --incremental append --last-value 6

列出创建的job:

sqoop job --list

执行创建的job:

sqoop job --exec myjob (会提示让你输出mysql密码)

为了保存mysql密码,让其自动运行,要修改sqoop的配置文件sqoop-site.xml,让下面的内容生效:

<property>
<name>sqoop.metastore.client.record.password</name>
<value>true</value>
<description>If true, allow saved passwords in the metastore.
</description>
</property>

修改后,下次执行之前,要先删除以前未修改配置文件的的myjob:

sqoop job --delete myjob

把数据从hdfs导出到mysql中

导数据得事先在mysql中存在表
导出数据必须按目录导出,不能按文件导出

导出数据

sqoop export --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table ids --fields-terminated-by '\t' --export-dir '/ids'

导出可以重复进行,多次插入数据进入mysql中

注意:sqoop的导入导出事物是以Mapper任务为单位。

sqoop官网:http://sqoop.apache.org/

posted on   chaplinthink  阅读(160)  评论(0编辑  收藏  举报

编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示