- 使用场景
Haoop文件存储体系(HDFS、Hive、Hbase)与关系型数据库(Mysql)之间的数据导入导出。
Sqoop安装
- 下载并解压
安装Sqoop的前提是已经具备Java和Hadoop的环境。
1) 最新版下载地址:http://mirrors.hust.edu.cn/apache/sqoop/
2) 上传安装包sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
3) 解压sqoop安装包到指定目录
tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module/
- 修改配置文件
1) 重命名配置文件
$ cp sqoop-env-template.sh sqoop-env.sh
$ cp sqoop-site-template.xml sqoop-site.xml
2) 修改配置文件 (sqoop-env.sh)
export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2
export HIVE_HOME=/opt/module/apache-hive-1.2.2-bin
- 拷贝JDBC驱动
拷贝jdbc驱动到sqoop的lib目录下,如:
cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop/1.4.6.bin__hadoop-2.0.4-alpha/lib/
- 测试Sqoop是否能够成功连接数据库
bin/sqoop list-databases --connect jdbc:mysql://hadoop100:3306/ --username root --password root
RDBMS到HDFS
- 全部导入
sqoop import --connect jdbc:mysql://hadoop100:3306/company --username root --password root --table staff --target-dir /caicai
- 使用-m而不是用split-by没有发现异常
sqoop import --connect jdbc:mysql://hadoop100:3306/metastore --username root --password root --table TBLS --target-dir /cai -m 2
- 查询导入时,query中带分号报错
提示:must contain '$CONDITIONS' in WHERE clause.
提示:--query选项,不能同时与--table选项使用
sqoop import --connect jdbc:mysql://hadoop100:3306/metastore --username root --password root --target-dir /czl --split-by TBL_ID --query 'select TBL_ID from TBLS where TBL_ID<100 and $CONDITIONS'
RDBMS到Hive
导入到hive中【目录必须不存在】
sqoop import --connect jdbc:mysql://hadoop100:3306/metastore --username root --password admin --target-dir /user/hive/warehouse/t1 --split-by TBL_ID --query 'select TBL_ID from TBLS where TBL_ID<100 and $CONDITIONS'
或者
sqoop import --connect jdbc:mysql://hadoop100:3306/company --username root --password root --table staff --hive-import --hive-overwrite --hive-table staff_hive
HIVE/HDFS到RDBMS
提示:Mysql中如果表不存在,不会自动创建
sqoop export --connect jdbc:mysql://hadoop100:3306/company --username root --password root --table staff --num-mappers 1 --export-dir /user/hive/warehouse/staff_hive --input-fields-terminated-by "\t"