22.Sqoop的安装与数据的导入导出

本文详细介绍了Sqoop的安装过程,包括配置文件修改和添加MySQL驱动包。接着,文章展示了如何将MySQL数据导入到HDFS,再到Hive,以及如何进行数据子集导入和增量导入。同时,解释了--split-by参数的工作原理,并讨论了数据倾斜问题。最后,讲解了如何将HDFS数据导回MySQL。
摘要由CSDN通过智能技术生成

Sqoop介绍
Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。其机制是将导入或导出命令翻译成mapreduce程序来实现
在翻译出的mapreduce中主要是对inputformat和outputformat进行定制

 

Sqoop的安装
1、将Sqoop包上传到hadoop集群,我这里用的是sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz。解压后改下名字sqoop

[root@mini1 ~]#tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
[root@mini1 ~]# mv sqoop-1.4.6xxxx(解压后的包名)sqoop 

2、修改配置文件
进入conf目录修改sqoop-env-template.sh名字为sqoop-env.sh
并修改该文件内容,三个地方,一个hadoop命令所在位置,一个mapreduce所在位置,一个hive命令所在位置(怎么查看命令位置可以使用which,比如which hive,但是这里可以指定一个父目录)。

[root@mini1 ~]# cd sqoop
[root@mini1 sqoop]#cd conf/
[root@mini1 conf]# ll
总用量 28
-rw-rw-r--. 1 root root 3895 4月  27 2015 oraoop-site-template.xml
-rw-rw-r--. 1 root root 1404 4月  27 2015 sqoop-env-template.cmd
-rwxr-xr-x. 1 root root 1345 4月  27 2015 sqoop-env-template.sh
-rw-rw-r--. 1 root root 5531 4月  27 2015 sqoop-site-template.xml
-rw-rw-r--. 1 root root 5531 4月  27 2015 sqoop-site.xml
[root@mini1 conf]# mv sqoop-env-template.sh sqoop-env.sh
[root@mini1 conf]#vi sqoop-env.sh
...
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/root/apps/hadoop-2.6.4/

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/root/apps/hadoop-2.6.4/

#Set the path to where bin/hive is available
export HIVE_HOME=/root/apps/hive/

3、加入mysql的驱动包
由于装hive的时候就将mysql驱动包传到了hive的lib目录下,这里直接拷贝过来即可

[root@mini1 conf]#cd ..
[root@mini1 sqoop]# cp /root/apps/hive/lib/mysql-connector-java-5.1.28.jar ./lib/

到这就安装完成了。

可能的问题

mysql-connector-java-5.1.28.jar
这个jar包的版本必须在28之上,否则可能会有问题。

数据导入
1、导入数据库表数据导入到hdfs
mysql创建表,插入数据,为了使用方便复制了如下

mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>CREATE TABLE `emp` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `deg` varchar(255) NOT NULL,
  `salary` int(11) NOT NULL,
  `dept` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.03 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| emp            |
| t_user         |
+----------------+
2 rows in set (0.01 sec)

mysql> desc emp;
+--------+--------------+------+-----+---------+----------------+
| Field  | Type         | Null | Key | Default | Extra          |
+--------+--------------+------+-----+---------+----------------+
| id     | int(32)      | NO   | PRI | NULL    | auto_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值