您的位置:首页 > 运维架构

sqoop 安装及使用

2013-05-07 14:43 302 查看
sqoop的版本跟hadoop的版本要对应,由于我用的是hadoop-1.0.4,于是我下载的sqoop是sqoop-1.4.3.bin__hadoop-1.0.0.tar.gz。

这里假设已经安装好了hadoop,可能你没有设置环境变量,有几个环境变量sqoop会用到:

export PATH=/home/hadoop/sqoop-1.4.3/bin:$PATH

export HADOOP_HOME=/home/hadoop/hadoop-1.0.4

export HADOOP_COMMON_HOME=${HADOOP_HOME}

export HADOOP_MAPRED_HOME=${HADOOP_HOME}

将这几个环境变量添加到 ~/.bashrc文件里去,然后source ~/.bashrc使更改生效。

然后启动hadoop集群,运行一下sqoop help看看能不能执行。

如果是从mysql数据库导入到hdfs的话,sqoop是直接支持的,不需要额外的jar包,如果是其他数据库的话比如oracle(我用的是oracle),需要将oracle的jdbc驱动jar包放到${sqoop_home}/lib目录下面, 我用的oracle的驱动是ojdbc14.jar,网上说用ojdbc6.jar,应该都行。

接下来尝试一下导入数据,导入数据一般都是写脚本来执行,比较方便一点。比如我写了一个脚本sqoop-import.sh,里面内容如下:

CONNECT_URL=jdbc:oracle:thin:@192.168.27.160:1521:mydb1
ORACLE_NAME=dp
ORACLE_PWD=dp
TABLE_NAME=TEST_TB
COLUMNS=TEST_ID,TEST_NAME
HDFS_PATH=ORA_DATA/${TABLE_NAME}
sqoop import --append --connect $CONNECT_URL --username $ORACLE_NAME --password
$ORACLE_PWD --target-dir $HDFS_PATH --num-mappers 1 --table $TABLE_NAME --column
s $COLUMNS --fields-terminated-by '\001'

前面的都是常量参数,CONNECT_URL :数据库URL,然后ORACLE_NAME用户名、ORACLE_PWD密码,TABLE_NAME是准备导入的表名,COLUMNS是准备导入的列名,HDFS_PATH是导入的数据在DFS上存储的路径,这里写的是相对路径,导入成功后会在hdfs://ip:port/user/hadoop/ORA_DATA目录下面创建TEST_TB目录,数据就存放在该目录下面。sqoop import是导入命令,参数用的是上面定义的参数,这样需要导入另外一张表的时候,只需要修改TABLE_NAME,COLUMNS两个参数就可以了。

接下来就是执行脚本导入数据:

chmod 777 sqoop-import.sh

./sqoop-import.sh

然后去hadoop 后台文件系统http://master:50070去看看有没有创建对应的表名的目录,数据有没有导入到该目录里去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: