-
概述
sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。
导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等. -
原理
将导入或导出命令翻译成mapreduce程序来实现
在翻译出的mapreduce中主要是对inputformat和outputformat进行定制 -
安装
安装sqoop的前提是已经具备java和hadoop的环境
3.1 下载并解压
这里用的是cdh版本sqoop.
下载地址 http://archive.cloudera.com/cdh5/cdh/5/
sqoop1版本详细下载地址 http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.14.0.tar.gz
sqoop2版本详细下载地址http://archive.cloudera.com/cdh5/cdh/5/sqoop2-1.99.5-cdh5.14.0.tar.gz
里使用sqoop1的版本,下载之后上传到/export/softwares目录下,然后进行解压cd /export/softwares tar -zxvf sqoop-1.4.6-cdh5.14.0.tar.gz -C ../servers/
3.2 修改配置文件
cd /export/servers/sqoop-1.4.6-cdh5.14.0/conf/ cp sqoop-env-template.sh sqoop-env.sh vim sqoop-env.sh #修改内容 export HADOOP_COMMON_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0 export HADOOP_MAPRED_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0 export HIVE_HOME=/export/servers/hive-1.1.0-cdh5.14.0
3.3 加入额外的依赖包
sqoop的使用需要添加两个额外的依赖包,一个是mysql的驱动包,一个是java-json的的依赖包,不然就会报错.
mysql-connector-java-5.1.40.jar
java-json.jar
将这个两个jar包添加到sqoop的lib目录下 -
验证启动
cd /export/servers/sqoop-1.4.6-cdh5.14.0 bin/sqoop-version
-
Sqoop的数据导入
5.1 导入数据库表数据到HDFS
下面的命令用于从MySQL数据库服务器中的emp表导入HDFS。bin/sqoop import --connect jdbc:mysql://192.168.1.101:3306/userdb --password admin --username root --table emp --m 1
在导入表数据到HDFS使用Sqoop导入工具,我们可以指定目标目录。
使用参数 --target-dir来指定导出目的地,
使用参数–delete-target-dir来判断导出目录是否存在,如果存在就删掉
使用参数–fields-terminated-by可以指定分隔符bin/sqoop import --connect jdbc:mysql://172.16.43.67:3306/userdb --username root --password admin --delete-target-dir --table emp --target-dir /sqoop/emp --m 1 --fields-terminated-by '\t'
5.2 导入关系表到HIVE
将我们mysql表当中的数据直接导入到hive表中的话,我们需要将hive的一个叫做hive-exec-1.1.0-cdh5.14.0.jar的jar包拷贝到sqoop的lib目录下cp /export/servers/hive-1.1.0-cdh5.14.0/lib/hive-exec-1.1.0-cdh5.14.0.jar /export/servers/sqoop-1.4.6-cdh5.14.0/lib/
准备hive数据库与表
hive (default)> create database sqooptohive; hive (default)> use sqooptohive; hive (sqooptohive)> create external table emp_hive(id int,name string,deg string,salary int ,dept string) row format delimited fields terminated by '\001';
导入
bin/sqoop import --connect jdbc:mysql://172.16.43.67:3306/userdb --username root --password admin --table emp --fields-terminated-by '\001' --hive-import --hive-table sqooptohive.emp_hive --hive-overwrite --delete-target-dir --m 1
hive表数据查看
select * from emp_hive;
5.3 导入关系表到hive并自动创建hive表
我们也可以通过命令来将我们的mysql的表直接导入到hive表当中去bin/sqoop import --connect jdbc:mysql://172.16.43.67:3306/userdb --username root --password admin --table emp_conn --hive-import -m 1 --hive-database sqooptohive;
通过这个命令,我们可以直接将我们mysql表当中的数据以及表结构一起倒入到hive当中去
-
Sqoop的数据导出
hdfs导出到mysql
通过export来实现数据的导出,将hdfs的数据导出到mysql当中去bin/sqoop export \ --connect jdbc:mysql://172.16.43.67:3306/userdb \ --username root --password admin \ --table emp_out \ --export-dir /sqoop/emp \ --input-fields-terminated-by ","
sqoop更多参数可以参考sqoop官网 sqoop官网
sqoop的安装和简单使用案例
最新推荐文章于 2024-04-08 08:44:46 发布