
- 作 用
- 处理大数据
- 起始时间
- 2009年
- 外文名
- sqoop
- 发 音
- skup
-
2022-03-15 21:24:41
Sqoop
一、 Sqoop安装
\1) 将Sqoop安装包上传到虚拟机并进行解压:
[root@cent71 module]# tar -zxf sqoop-1.4.7.tar.gz -C /opt/software/
\2) 修改配置文件sqoop-env.sh:
[root@cent71 conf]# cp sqoop-env-template.sh sqoop-env.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/opt/software/hadoop-2.7.0
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/opt/software/hadoop-2.7.0
#set the path to where bin/hbase is available
#export HBASE_HOME=
#Set the path to where bin/hive is available
export HIVE_HOME=/opt/software/apache-hive-2.1.1-bin
\3) 将mysql驱动复制到sqoop的lib中:
[root@cent71 module]# cp mysql-connector-java-5.1.39.jar /opt/software/sqoop-1.4.7.bin__hadoop-2.6.0/lib/
\4) 设置好环境变量,就可以在任意路径下执行sqoop指令了。
export SQOOP_HOME=/opt/software/sqoop-1.4.7.bin__hadoop-2.6.0
export PATH= P A T H : PATH: PATH:SQOOP_HOME/bin
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# source /etc/profile
\5) 测试能否连接到mysql:
\6) 如果不行的话应该是只可以localhost连接
\7) 修改mysql数据库的user表
\8) Update mysql.user set host=”%” where user=”root”;
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop list-databases –connect jdbc:mysql://cent71:3306/ --username root --password 123456
sqoop list-databases –connect jdbc:mysql://master:3306/ --username root --password 123456
二、 Sqoop导入
1 Mysql导入到HDFS
a) 执行导入指令:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop import --connect jdbc:mysql://cent71:3306/mybase --username root --password 123456 --target-dir /sqoopresult --table stu --num-mappers 1
–connect:指定连接的关系数据库
–username:指定连接数据库的用户名
–password:指定连接数据库的密码
–target-dir:指定导入到HDFS的目录
–table:代表要进行导入数据操作的mysql源数据库表名
–num-mappers:指定map任务个数(或-m),必填
注意:sqoop中,可以直接在控制行输入上述命令,也可以使用配置文件进行导入导出。如果使用配置文件,可以创建文件conf2:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# touch myconf/conf2
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# vi myconf/conf2
import
–connect
jdbc:mysql://cent71:3306/mybase
–username
root
–password
123456
–target-dir
/sqoopresult4
–table
stu
–m
1
然后执行指令:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop --options-file myconf/conf2
即可。
在写文件conf2时需要注意:参数值和项不能在同一行,写的时候每个隔开一行即可。
b) 查看文件内容:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# hadoop fs -cat /sqoopresult/part-m-00000
62131222,连鑫栋,软件2班
62131223,李庆,软件2班
2 Mysql导入到Hive
a) 将hive-common包加入到sqoop的lib中:
[root@cent71 lib]# cp hive-common-2.1.1.jar /opt/software/sqoop-1.4.7.bin__hadoop-2.6.0/lib/
b) 在hive中创建表stu2:
hive> create table stu2 like stu;
c) 创建option文件:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# cat myconf/conf3
import
–connect
jdbc:mysql://cent71:3306/mybase
–username
root
–password
123456
–table
stu
–hive-table
sqoop.stu2
–hive-import
–m
1
–fields-terminated-by
\t
d) 执行文件:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop --options-file myconf/conf3
e) 在hive中查看:
hive> select * from stu2;
问题注意:
Sqoop导入到Hive中的步骤是这样的:先导入到HDFS上,再load data到hive中,因此,如果这个过程中出错了,导致第二步没有运行成功,HDFS上就会多了一个路径/user/root/*;第二次再导入时因为已经存在这个路径了,就会报错。所以第二次尝试时应该先删掉此路径。
3 MySQL表数据子集导入
可以使用Sqoop提供的—where和—query参数,先进行数据过滤,再将满足条件的数据进行导入。
–where语句:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# cat myconf/conf2
import
–connect
jdbc:mysql://cent71:3306/mybase
–username
root
–password
123456
–target-dir
/sqoopresult5
–table
stu
–num-mappers
1
–where
stuno=‘100001’
–columns
stuno,name,bjname
查看结果:
[root@cent72 ~]# hadoop fs -cat /sqoopresult5/part-m-00000
100001,test,testbj
100001,test,testbj
100001,test,testbj
–query主要针对复杂的数据过滤,后面可以添加SQL语句,更方便高效地导入数据:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# vi myconf/conf2
import
–connect
jdbc:mysql://cent71:3306/mybase
–username
root
–password
123456
–target-dir
/sqoopresult6
–m
1
–query
select stuno,name from stu WHERE bjname=‘计算1班’ AND $CONDITIONS
作用就是先查出子集,然后将子集进行导入。$CONDITIONS相当于一个占位符,动态地接收经过滤后的子集数据,然后让每个Map任务执行查询的结果并进行数据导入。
查看结果:
[root@cent72 ~]# hadoop fs -cat /sqoopresult6/part-m-00000
62131201,高俊杰
62131202,安耀楠
62131203,耿源
62131204,刘乐妍
使用时需要注意以下几点:
\1) 如果没有指定“—m 1”,那么在指令中必须要添加—split-by参数,值为表中唯一的字段(如id),作用是针对多副本map任务并行执行查询结果并进行数据导入;
\2) –query餐宿后的查询语句中如果已经使用了WHERE关键字,那么在连接$CONDITIONS占位符前必须使用AND关键字,否则必须使用WHERE关键字连接;
\3) –query参数后的查询语句中的$CONDITIONS不能省略,并且如果查询语句使用双引号进行包装,则必须使用$CONDITIONS,这样可以避免shell将其视为Shell变量。
三、 Sqoop导出
1 将hive表的数据导出到mysql表中。
\1) 在mysql中创建表
\2) 导出指令:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop export
–connect jdbc:mysql://cent71:3306/mybase
–username root
–password 123456
–table stu
–export-dir /user/hive/warehouse/sqoop.db/stu
–fields-terminated-by ‘\t’
bin/sqoop export --connect jdbc:mysql://master:3306/smbms --username root --password 123456 --table smbms_user1 --export-dir /sqoopresult/part-m-00000 --fields-terminated-by ‘,’
2 Hive中有中文字符,导入到mysql后中文乱码的问题:
\1) Mysql中修改默认编码字符为utf-8:
mysql> show variables like ‘%char%’;
在/etc/my.conf文件中,增加如下配置:
[mysqld]中增加character-set-server=utf8
再增加如下配置:
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
重启mysql服务,再进入mysql客户端:
mysql> show variables like ‘%char%’;
±-------------------------------------±---------------------------+
| Variable_name | Value |
±-------------------------------------±---------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| validate_password_special_char_count | 1 |
±-------------------------------------±---------------------------+
9 rows in set (0.01 sec)
\2) 重新创建库mybase,创建表stu:
mysql> create table stu(stuno varchar(50),name varchar(50),bjname varchar(50));
\3) 执行导入的时候要指明使用utf-8:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop export --connect "jdbc:mysql://cent71:3306/mybase
?useUnicode=true&characterEncoding=UTF-8" --username root --password 123456 --table stu --export-dir /user/hive/warehouse/sqoop.db/stu --fields-terminated-by ‘\t’
或者导入的时候使用option-file,在myconf/下创建conf1,内容如下:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# cat myconf/conf1
export
–connect
jdbc:mysql://cent71:3306/mybase
–username
root
–password
123456
–table
stu
–export-dir
/user/hive/warehouse/sqoop.db/stu
–fields-terminated-by
\t
然后执行以下指令即可:
[root@cent71 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop --options-file myconf/conf1
\4) 再在mysql中查询发现中文已经可以正常显示了:
mysql> select * from stu;
±---------±-------------±--------------+
| stuno | name | bjname |
±---------±-------------±--------------+
| 62131222 | 连鑫栋 | 软件2班 |
| 62131223 | 李庆 | 软件2班 |
3 从HDFS向mysql导出数据:
\1) 在HDFS上上传文件/zodiac.txt
\2) Mysql中创建表zodiac
\3) 编写导出文件:
[root@cent71 myconf]# cat conf1
export
–connect
jdbc:mysql://cent71:3306/mybase
–username
root
–password
123456
–table
zodiac
–export-dir
/zodiac.txt
–fields-terminated-by
,
\4) 导出:
[root@cent71 myconf]# sqoop --options-file conf1
\5) 查看结果:
mysql> select * from zodiac;
±-------±-----------±-------±-----+
| name | birth | gender | code |
±-------±-----------±-------±-----+
| lucy | 1984-9-10 | F | 30 |
| mary | 2001-12-24 | F | 20 |
| edward | 1981-2-12 | M | 10 |
| bob | 2004-10-10 | M | 50 |
| sara | 1974-4-5 | F | 2 |
±-------±-----------±-------±-----+
5 rows in set (0.00 sec)
\1.
更多相关内容 -
java连接sqoop源码-sqoop-example:sqoop-示例
2021-06-15 17:01:27java连接sqoop源码Sqoop-服务 Sqoop scala 驱动程序,带有 mysql 元存储、光滑的数据库和喷雾。 Sqoop 是一个很好的工具,用于在 HDFS 中导入和导出数据。 大多数 sqoop 作业都是通过脚本编写的,这对于临时作业来说... -
docker-sqoop:Apache Sqoop Docker映像
2021-04-29 10:08:14Apache Sqoop Docker映像 注意:这是master分支-对于特定的Sqoop版本,请始终检查相关分支 用法 运行时,您必须在卷中提供JDBC jar: docker run -v /path/to/jdbc-jars:/jdbc -it dvoros/sqoop:latest MySQL导入... -
Sqoop同步数据命令
2021-01-07 06:03:45Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以使用Sqoop将数据从MySQL或Oracle等关系数据库管理系统(RDBMS)导入Hadoop分布式文件系统(HDFS),在Hadoop MapReduce中转换数据,然后将数据... -
Mac安装Sqoop
2021-01-07 13:41:11Sqoop是一款用于Hadoop(Hive)与关系型数据库(mysql等)间进行数据的传递的ETL工具。 二:安装sqoop 1. 安装sqoop brew install sqoop 2. 配置环境变量 Hadoop, Hive, HBase and ZooKeeper must be installed and ... -
大数据之sqoop
2021-06-15 07:27:19Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS... -
sqoop-1.4.7.jar
2021-01-27 17:11:25解决错误:Could not find or load main class org.apache.sqoop.Sqoop。把这个sqoop-1.4.7.jar放到sqoop根目录下的lib目录中,即可。 如果你没有积分,也可以自己去这个地址下载:... -
Hadoop-Sqoop-Oracle:使用Sqoop在Oracle数据库和HDFS之间进行导入和导出
2021-04-07 17:17:44Hadoop-Sqoop-Oracle 使用Sqoop在Oracle数据库和HDFS之间进行导入和导出 内容 使用 操作系统-Ubuntu 20.04.1 LTS(VMware) 后端-Java (JDK 1.8), Sqoop(v1.4.7) , Hadoop(v3.3.0) 库-OJDBC(v7),... -
Sqoop 导入数据异常处理
2021-01-07 15:03:33写在前面 我在直接下载https://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.7.0.tar.gz 解压使用会出现几个bug,之前也是出现了,然后也没有来...这是因为sqoop缺少java-json.jar包 下载java-json.jar包: http -
sqoop从mysql到hive的时间字段问题
2021-01-07 12:26:59一、问题发现与分析 ...经过对比:sqoop在转换MySQL的datatime字段类型为hive的string时会出现问题:默认先转为对应时间戳,再转换为北京市区时间,就会使时间多8小时。 解决办法有两个: 1、在sql里将时间字段转换为 -
sqoop-1.4.7.tar.gz.zip
2021-11-07 08:34:47sqoop-1.4.7.tar.gz.zip 提示:先解压再使用,最外层是zip文件 -
sqoop重编译版本,解决了联合主键的同步问题
2020-06-29 11:20:54原生的sqoop在迁移联合主键的表至hive时,只能识别一个主键,导致数据覆盖。本资源是把sqoop的源码按照官方推荐的issue解决方案重新编译后的版本。sqoop-1.4.7.bin__hadoop-2.6.0-2020.0508.tar.gz是已完成编译的tar... -
Sqoop空指针异常需要的jar包.rar
2020-08-21 16:43:02Sqoop从MySQL导数据到HDFS上,如果报错空指针异常,需要的jar包。正常情况只要安装java-json.jar就可以。如果不行就都安装上。如果你用的是阿里云的EMR,安装完之后还报错的话,需求确认你的jar包中是否含有hive开头... -
sqoop常用命令.xlsx
2021-01-15 19:01:55sqoop的常用指令操作 -
大数据技术基础实验报告-sqoop的安装配置与应用.doc
2021-08-21 08:56:58大数据技术基础实验报告-sqoop的安装配置与应用 -
sqoop-1.4.7.zip
2020-04-24 23:34:14运行Sqoop报错:找不到或无法加载主类 org.apache.sqoop.sqoop 将sqoop-1.4.7.jar包放到Sqoop的lib目录下,问题解决。 -
sqoop-1.4.6.jar.zip
2020-04-20 15:38:46sqoop框架开发工具使用的jar sqoop-1.4.6.jar 手动安装到maven <groupId>org.apache.sqoop <artifactId>sqoop <version>1.4.6 </dependency> -
sqoop 用户手册
2018-05-31 12:39:59Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,... -
sqoop工具_202006041735481.docx
2020-06-04 17:38:52Apache Sqoop(SQL-to-Hadoop) 项目旨在协助 RDBMS 与 Hadoop 之间进行高效的大数据交流。 用户可以在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase 和Hive)中;同时也可以把... -
使用shell脚本执行hive、sqoop命令的方法
2020-09-15 04:07:48今天小编就为大家分享一篇使用shell脚本执行hive、sqoop命令的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
java连接sqoop源码-quick-sqoop:ApacheSqoopETL工具的快速参考
2021-06-15 16:59:49java连接sqoop源码Apache Sqoop 目录 #Getting Started下载并安装 Sqoop 注意:选择合适的版本,不要使用 sqoop2 因为它不是正式的 GA 并且可能永远不会 $ wget ... -
Sqoop企业级大数据迁移方案全方位实战视频教程
2021-10-21 10:19:23从零开始讲解大数据业务及数据采集和迁移需求,以案例驱动的方式讲解基于Sqoop构建高性能的分布式数据迁移和同步平台。 课程亮点 1,知识体系完备,从小白到大神各阶段读者均能学有所获。 2,生动形象,化繁为简,... -
运行Sqoop出现hcatalog does not exist!…accumulo does not exist!解决方案
2021-01-07 15:31:47有一段时间没用sqoop了,今天打开进行测试的时候,发现命令行总是出现下面这样的警示信息: Warning: /opt/module/sqoop/bin/…/…/hcatalog does not exist! HCatalog jobs will fail. Please set $HCAT_HOME to ... -
sqoop-1.4.6和sqoop-1.4.7 jar包
2018-07-27 23:45:59sqoop框架开发工具使用的jar,目前版本有1.4.6和1.4.7两个jar包 -
sqoop官方文档学习笔记
2018-04-25 13:35:10Sqoop是一个用于在Hadoop和关系数据库或大型机之间传输数据的工具。您可以使用Sqoop将关系数据库管理系统(RDBMS)(如MySQL或Oracle或大型机)中的数据导入Hadoop分布式文件系统(HDFS),转换Hadoop MapReduce中的... -
Sqoop通过Phoenix导hbase数据到hive
2018-11-06 17:25:02出现此问题时使用:java.lang.NullPointerException at org.json.JSONObject.(JSONObject.java:144) at org.apache.sqoop.util.SqoopJsonUtil.... at org.apache.sqoop.Sqoop.main(Sqoop.java:252) -
sqoop-1.4.6.2.3.99.0-195.jar..zip
2020-08-14 17:23:04编译Atlas用 sqoop-1.4.6.2.3.99.0-195.jar 内含安装jar包以及maven手动安装命令 详情可参考我的博客: https://blog.csdn.net/qq_26502245/article/details/108008070 -
apache-atlas-2.1.0-sqoop-hook.tar.gz--基于cdh6.3.1编译完成
2021-05-10 10:31:50apache-atlas-2.1.0-sqoop-hook.tar.gz--基于cdh6.3.1编译完成