目前sqoop分为sqoop1和sqoop2,sqoop最终稳定版本为1.4.6,sqoop2最新版本为1.9.7。两个版本的差异比较大。
本文章主要讲解sqoop1.4.6
一、前置需求
需要在linux上安装jdk和hadoop
二、安装sqoop1.4.6
文档地址:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html
(1)下载sqoop,放到/home目录下,进行解压
tar -zxvf sqoop1.4.6
(2)修改环境变量
vi /etc/profile //修改环境变量配置文件
export SQOOP_HOME=/home/sqoop1.4.6 //添加环境变量
export PATH=$PATH:$SQOOP_HOME/bin //添加环境变量
source /etc/profile //使修改的文件立即生效
(3)修改sqoop1.4.6/conf下的配置文件
拷贝sqoop-env-template.sh为sqoop-env.sh
cp sqoop-env-template.sh sqoop-env.sh
(4)修改sqoop-env.sh
添加上需要的对应的程序的地址。例如:
export HADOOP_COMMON_HOME=/home/hadoop
export HADOOP_MAPRED_HOME=/home/hadoop
(5)修改sqoop1.4.6/bin/configure-sqoop文件
把自己不需要的都注解掉。我这里注解掉的是ZOOKEEPER_HOME,ACCUMULO_HOME,HCAT_HOME,HBASE_HOME
(6)测试sqoop是否成功配置安装
在sqoop1.4.6/bin下执行sqoop version查看是否成功
三、sqoop语法
导入数据到hdfs上
mysql :
sqoop import --connect jdbc:mysql://192.168.0.166/hive --username hive --table testlin --target-dir
oracle: oracle 的表名需要大写,要不会报错,说找不到;
sqoop import --connect jdbc:oracle:thin:@192.168.0.105:1521:ORCL --username hbea --password fulong
带where条件的导入: and $CONDITIONS 是必须要这么写的 --split-by 也是必须要写的
sqoop import --connect jdbc:oracle:thin:@192.168.0.105:1521:ORCL --username hbea --password fulong
hive: 官网7.2.11 Table 8 讲了sqoop导入数据到 hive 的语法 -m参数控制Map tasks的数目,默认是4个
sqoop import --connect jdbc:oracle:thin:@192.168.0.105:1521:ORCL --username hbea --password fulong --table ACTION_LOG --columns "ACTION_TIME,USER_ID" -m 1 --hive-import --hive-database HIVE --hive-table HIVE_LOG --hive-drop-import-delims --fields-terminated-by "\t" --lines-terminated-by "\n"