这篇文章主要为大家展示了“Linux下如何安装并使用sqoop”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何安装并使用sqoop”这篇文章吧。
sqoop它是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

sqoop-1.4.7安装配置流程
(1) Sqoop环境前提:
(2) 解压sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz安装包到目标目录下:
tar -zxvf .tar.gz -C 目标目录
(3) 为后续方便,重命名Sqoop文件夹:
mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7
(4) 修改配置文件:
进入sqoop-1.4.7/conf路径,重命名配置文件:
mv sqoop-env-template.sh sqoop-env.sh
修改sqoop-env.sh信息:(若配置了环境变量,可通过
echo $XXXXX_HOME
查询安装位置)
#Set path to where bin/hadoop is availableexport HADOOP_COMMON_HOME=Hadoop安装路径#Set path to where hadoop-*-core.jar is available#export HADOOP_MAPRED_HOME=Hadoop安装路径#set the path to where bin/hbase is available#export HBASE_HOME=HBase安装路径#Set the path to where bin/hive is available#export HIVE_HOME=Hive安装路径#Set the path for where zookeper config dir is#export ZOOCFGDIR=ZooKeeper 配置文件夹 路径复制代码
(5) 关联Hive:
cp /XXX/hive/conf/hive-site.xml /XXX/sqoop-1.4.7/conf/
(5) 配置环境变量:
export SQOOP_HOME=sqoop安装路径export PATH=$PATH:$SQOOP_HOME/bin
(6) 启动查看版本号
(7) 添加驱动:
3. Sqoop操作
(1) 常用参数:
参数查看:Sqoop官网 -> documentation -> Sqoop User Guide
create-hive-table 创建hive表
import-all-tables 指定关系型数据库所有表到集群
codegen 获取某张表数据生成JavaBean并打Jar包
(2) import——Sqoop的导入操作:
功能:MySQL/Oracle –> HDFS/Hive
update user set host='%' where host='localhost';delete from user where Host='127.0.0.1';delete from user where Host='bigdata01';delete from user where Host='::1';select User, Host, Password from user;
FAILED: SemanticException [Error 10072]: Database does not exist: XXXXXXXXcp /XXX/hive/conf/hive-site.xml /XXX/sqoop-1.4.7/conf/ERROR tool.ImportTool: Import failed: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://bigdata01:9000/XXXXXXXXXX already existsERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf- 解决方法:——Hadoop环境加入Hive依赖
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*sqoop import --connect jdbc:mysql://bigdata01:3306/数据库名 --username root --password 密码 --table 表名 --num-mappers 1 --hive-import --fields-terminated-by "\t" --hive-overwrite --hive-table hive数据库名.表名sqoop import --connect jdbc:mysql://bigdata01:3306/数据库名 # 连接MySQL --username root # 用户名 --password XXXXXX # 密码 --table 表名 # 上传至HDFS的表 --target-dir /YYYYYYY # HDFS目标文件夹 --num-mappers 1 # 指定map运行 --fields-terminated-by "\t" # 指定分隔符hdfs dfs -cat /XXXXXXX/part-m-00000sqoop import --connect jdbc:mysql://bigdata01:3306/数据库名 --username root --password XXXXXX --table 表名 --target-dir /YYYYYYY --num-mappers 1 --fields-terminated-by "\t" --query 'select * from 表名 where 条件 and $CONDITIONS' # $CONDITIONS 对mapper进行索引sqoop import --connect jdbc:mysql://bigdata01:3306/数据库名 --username root --password XXXXXX --table 表名 --target-dir /YYYYYYY --num-mappers 1 --columns 字段名
(3) emport——Sqoop的导出操作:
功能:HDFS/Hive –> MySQL/Oracle
sqoop emport --connect jdbc:mysql://bigdata01:3306/数据库名 # 连接MySQL --username root # 用户名 --password XXXXXX # 密码 --table 表名 # 目标mysql表 --export-dir /user/hive/warehouse/YYYYYYY # hive文件夹 --num-mappers 1 # 指定map运行 --input-fields-terminated-by "\t" # 指定分隔符
(4) 列出所有数据库:
sqoop list-databases --connect jdbc:mysql://bigdata01:3306/ --username root --password 密码
(5) 获取数据库表数据生成JavaBean:
sqoop codegen --connect jdbc:mysql://bigdata01:3306/数据库名 --username root --password 密码 --table 表名 -- bindir Linux本地路径 # 指定Jar包打包路径 --class-name 类名 # 指定Java类名 --fields-terminated-by "\t"
(6) 合并hdfs中不同目录下的数据:
sqoop merge --new-data hdfs新表路径 --onto hdfs旧表路径 --target-dir /YYYYYYY # 合并后的hdfs路径 --jar-file = # Linux本地Jar包路径 --class-name XXXXX # Jar包的类 --merge-key id # 合并依据
**注意:**merge操作是一个新表替代旧表的操作,如果有冲突id的话新表数据替换旧表数据,如果没有冲突则是新表数据添加到旧表的数据。
以上是“Linux下如何安装并使用sqoop”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注天达云行业资讯频道!