安装sqoop

14 篇文章 0 订阅
11 篇文章 0 订阅

Sqoop:是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。

功能:

  • 导入数据:MySQL,Oracle导入数据到hadoop的HDFS、HIVE、HBASE等数据存储系统;

  • 导出数据:从hadoop的文件系统中导出数据到关系数据库;

环境要求:具有java和hadoop的环境


一:上传安装包,解压和更名

这里两个安装包 sqoop-1.4.7 bin_hadoop-2.6.0.tar.gz和sqoop-1.4.7.tar.gz

因为hadoop版本为3.1.3 所以sqoop的版本太低,需要自行配置

先把sqoop-1.4.7.tar.gz压缩包传进去

解压:[root@siwen install]# tar -zxf sqoop-1.4.7.tar.gz -C ../soft/

切换目录:[root@siwen install]# cd ../soft/

更名:[root@siwen soft]# mv sqoop-1.4.7/ sqoop147

二:添加jar包

sqoop-1.4.7 bin_hadoop-2.6.0.tar.gz此压缩包中包含avro-1.8.1.jar,把这个jar包拷入sqoop147中

将hive312/lib下的两个jar包拷到sqoop下:

[root@siwen lib]# cp /opt/soft/hive312/lib/hive-common-3.1.2.jar ./

[root@siwen lib]# cp /opt/soft/hive312/lib/mysql-connector-java-8.0.29.jar ./

三:修改配置文件,添加环境变量

复制一个sqoop-env.sh并修改

[root@siwen conf]# cp sqoop-env-template.sh sqoop-env.sh

[root@siwen conf]# vim ./sqoop-env.sh

添加环境变量:[root@siwen conf]# vim /etc/profile

#SQOOP_HOME
export SQOOP_HOME=/opt/soft/sqoop147
export PATH=$PATH:$SQOOP_HOME/bin

四:刷新资源,启动sqoop及使用

[root@siwen conf]# source /etc/profile

[root@siwen conf]# sqoop version 出来版本号就是安装成功啦

开始使用

1,查看mysql服务器数据库中的表,以下sql语句是指定查看了lianxi这个数据库中的表格

注:IP要写的是mysql服务器的IP,username和password的值要写对

[root@siwen conf]# sqoop list-tables --connect jdbc:mysql://192.168.255.155:3306/lianxi --username root --password root

2,在hive中创建一个teacher表,跟mysql中lianxi数据库的teahcer结构相同

[root@siwen ~]# sqoop create-hive-table --connect jdbc:mysql://192.168.255.155:3306/lianxi --username root --password root --table teacher --hive-table teacher

3,将mysql中lianxi库中的sc数据导出到hdfs指定的文件目录中

[root@siwen ~]# sqoop import --connect jdbc:mysql://192.168.255.155:3306/lianxi --username root --password root --table sc --target-dir /tmp/lianxi/sc --fields-terminated-by '\t' -m 1
sqoop -m 参数
sqoop并行化是启多个map task实现的,-m(或–num-mappers)参数指定map task数,默认是四个。当指定为1时,可以不用设置split-by参数,不指定num-mappers时,默认为4,当不指定或者num-mappers大于1时,需要指定split-by参数。并行度不是设置的越大越好,map task的启动和销毁都会消耗资源,而且过多的数据库连接对数据库本身也会造成压力。在并行操作里,首先要解决输入数据是以什么方式负债均衡到多个map的,即怎么保证每个map处理的数据量大致相同且数据不重复。–split-by指定了split column,在执行并行操作时(多个map task),sqoop需要知道以什么列split数据,其思想是:
1、先查出split column的最小值和最大值2、然后根据map task数对(max-min)之间的数据进行均匀的范围切分

4,带条件过滤(以sc表中sid=01为例)

[root@siwen ~]# sqoop import --connect jdbc:mysql://192.168.255.155:3306/lianxi --username root --password root --table sc --where "SID='01'" --target-dir /tmp/lianxi/sid01 -m 1

5,带条件过滤,查询指定列(sc表中sid=01,显示cid和score两列)

[root@siwen ~]# sqoop import --connect jdbc:mysql://192.168.255.155:3306/lianxi --username root --password root --table sc --columns "CID,score" --where "SID='01'" --target-dir /tmp/lianxi/sid01column -m 1

6,使用query查询(query后面直接写sql语句)

[root@siwen ~]# sqoop import --connect jdbc:mysql://192.168.255.155:3306/lianxi --username root --password root --target-dir /tmp/lianxi/scquery --query 'select * from sc where $CONDITIONS and CID="02" and score>80 ' --fields-terminated-by '\t' -m 1

7,将sc表导入到hive数据库中

#导入到hive的default数据库中
[root@siwen ~]# sqoop import --connect jdbc:mysql://192.168.255.155:3306/lianxi --username root --password root --table sc --hive-import test -m 1
#导入到hive的test数据库中
[root@siwen ~]# sqoop import --connect jdbc:mysql://192.168.255.155:3306/lianxi --username root --password root --table sc --hive-import --hive-database test -m 1

8,重写,原数据会覆盖

[root@siwen ~]# sqoop import --connect jdbc:mysql://192.168.255.155:3306/lianxi --username root --password root --table sc --hive-import --hive-overwrite --hive-database test -m 1

9,增量导入

[root@siwen ~]# sqoop import --connect jdbc:mysql://192.168.255.155:3306/lianxi --username root --password root --table sc --hive-import --incremental append --hive-database test1 -m 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值