一、什么是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.sh
cp 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/';