sqoop详解

来源:互联网 发布:阿里云os系统电脑版 编辑:程序博客网 时间:2024/06/05 18:02

目前sqoop分为sqoop1和sqoop2,sqoop最终稳定版本为1.4.6,sqoop2最新版本为1.9.7。两个版本的差异比较大。

本文章主要讲解sqoop1.4.6

一、前置需求

需要在linux上安装jdk和hadoop

二、安装sqoop1.4.6

下载地址:http://sqoop.apache.org

文档地址: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语法

#database named hive on the host 192.168.0.166 若是不写--target-dir 则默认是hdfs上的
user/username/tablename 路径
导入数据到hdfs上
mysql :
sqoop import --connect jdbc:mysql://192.168.0.166/hive --username hive --table testlin --target-dir 
/user/sqoop
oracle: oracle 的表名需要大写,要不会报错,说找不到;
sqoop import --connect jdbc:oracle:thin:@192.168.0.105:1521:ORCL --username hbea --password fulong 
--table ACTION_LOG

带where条件的导入: and $CONDITIONS 是必须要这么写的 --split-by 也是必须要写的
sqoop import --connect jdbc:oracle:thin:@192.168.0.105:1521:ORCL --username hbea --password fulong 
--query 'select ACTION_TIME,SESSION_ID FROM ACTION_LOG WHERE USER_ID IS NOT NULL and $CONDITIONS' 
--target-dir /user/sqoop/query1 --split-by ACTION_TIME

import           导入
--connect               连接串
--username              数据库用户名
--password           数据库密码
--query           查询语句
--table             查询表名
--target-dir   存放目录
-m                    开几个线程去执行
--fields-terminated-by       字段之间按什么分割
--null-string             空串按什么替换
--null-non-string          空串按什么替换
--mapreduce-job-name        mapreduce的任务名称

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"

1 0
原创粉丝点击