一、什么是Sqoop
1、sqoop是一款进行数据传输的工具,可以在hadoop的hdfs和关系型数据库之间传输数据
2、可以使用Sqoop把数据从MySQL或Qracle导入hdfs,也可以把数据从hdfs导入到MySQl或Qracle中
3、Sqoop可以自动执行数据传输的大部分工作,使用MapReduce导入和导出数据,并提供并行操作和容错
介绍:一个数据交换的工具可以把数据从mysql oracle搬到hdfs上 ,可以实现数据mysql oracel《==》hdfs之间互相传递
原理通过写sqoop命令把sqoop命令翻译成mapreduce通过mapreduce连接各种数据源实现数据的传递。
二、Sqoop安装
下载安装包url
解压到centos中tar -zxvf /home/hadoop/software/sqoop-1.4.6-cdh5.7.0.tar.gz -C ~/app/
配置环境变量vi ~/.bash_profile
export SQOOP_HOME=/home/hadoop/app/sqoop-1.4.6-cdh5.7.0
export PATH=$SQOOP_HOME/bin:$PATH
激活环境变量source ~/.bash_profile
到$SQOOP_HOME/conf目录下配置sqoop_env.shcp sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
# 在sqoop_env.sh中export HADOOP_COMMON_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/
export HADOOP_MAPPRED_HOME = /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/
export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0/
拷贝mysql驱动到$sqoop_home的目录下cp /home/hadoop/app/hive-1.1.0-cdh5.7.0/lib/mysql-connector-java-5.1.47.jar /home/hadoop/app/sqoop-1.4.6-cdh5.7.0/lib
测试sqoop环境sqoop-version
看到如下输出说明sqoop安装成功Sqoop 1.4.6-cdh5.7.0
git commit id
Compiled by jenkins on ******
三、sqoop的导入命令
- 命令语法:sqoop import (控制参数)(导入参数)
- 命令元素:导入操作,数据源,访问方式,导入控制,目标地址
- 命令理解:数据从哪里来,有什么控制,到哪里去
sqoop import --connect jdbc:mysql://192.168.19.137:3306/test --username root --password password --table u -m 1
- 添加—target-dir指定hdfs上数据存放的目录
sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root!123A --table u --target-dir /tmp/u1 -m 1
- 默认数据上传hdfs中如下路径
/user/当前linux用户名/mysql表名/
- 通过hive建立外表导入数据到hive
CREATE EXTERNAL TABLE u4(
id INT,
fname STRING,
lname STRING
)
ROW FORMAT delimited fields terminated by ','
LOCATION '/user/haddop/u/';