千家信息网

Linux下如何安装并使用sqoop

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"Linux下如何安装并使用sqoop",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Linux下如何安装并使用sqoop"这篇文章
千家信息网最后更新 2026年11月01日Linux下如何安装并使用sqoop

这篇文章主要为大家展示了"Linux下如何安装并使用sqoop",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Linux下如何安装并使用sqoop"这篇文章吧。

sqoop它是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

sqoop-1.4.7安装配置流程

(1) Sqoop环境前提:

  • Hadoop
  • 关系型数据库(MySQL/Oracle)
  • HBase
  • Hive
  • ZooKeeper

(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

    查询安装位置)

    • vi sqoop-env.sh

    • #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) 配置环境变量:

  • 修改配置文件:

    • vi /etc/profile
  • 增加以下内容:

    • export SQOOP_HOME=sqoop安装路径
    • export PATH=$PATH:$SQOOP_HOME/bin
  • 声明环境变量:

    • source /etc/profile

(6) 启动查看版本号

  • sqoop version

(7) 添加驱动:

  • 导入MySQL驱动到sqoop/lib下
  • 导入Oracle驱动到sqoop/lib下

3. Sqoop操作

(1) 常用参数:

  • 参数查看:Sqoop官网 -> documentation -> Sqoop User Guide

  • import 导入数据到集群

  • export 从集群导出数据

  • create-hive-table 创建hive表

  • import-all-tables 指定关系型数据库所有表到集群

  • list-databases 列出所有数据库

  • list-tables 列出所有数据库表

  • merge 合并数据

  • codegen 获取某张表数据生成JavaBean并打Jar包

(2) import——Sqoop的导入操作:

  • 功能:MySQL/Oracle –> HDFS/Hive

  • 修改MySQL访问权限:

    • 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';
    • flush privileges;
    • use mysql;
    • select User, Host, Password from user;
    • 查看权限:
    • 修改权限为所有用户都可访问:
  • 操作命令:

    • 准备工作:
    • 导入命令:
    • 开启hive服务
    • 在hive中创建好要导入的对应表
    • FAILED: SemanticException [Error 10072]: Database does not exist: XXXXXXXX
    • 报错原因:Sqoop没有关联Hive
    • 解决方法:
    • cp /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 exists
    • 报错原因:hdfs中存在同名路径
    • 解决方法:
    • 指定新路径或者删除hdfs中原文件
    • ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf
    • 报错原因:hive环境变量配置缺失
    • 解决方法:——Hadoop环境加入Hive依赖
    • source /etc/profile
    • export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
    • vi /etc/profile
    • 修改配置文件:
    • 增加以下内容:
    • 声明环境变量:
    • 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数据库名.表名
    • 在Hive中可以看到指定表中已传入数据信息
    • 可能报错1:
    • 可能报错2:
    • 可能报错3:
    • 导出命令:
    • Linux本地查看hdfs上传结果:
    • 使用query对数据进行过滤:
    • 直接过滤字段:
    • 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-00000
    • sqoop 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 字段名
    • 本地mysql表上传至hdfs:
    • 本地mysql表上传至hive:

(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" # 指定分隔符
    • hive表导出至本地mysql:

(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"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

数据 数据库 路径 文件 配置 命令 环境 内容 变量 密码 文件夹 目标 原因 方法 权限 用户 目录 篇文章 集群 驱动 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技有限公司 互联网科技活动banner 互联网和科技创新 疫情对互联网科技公司影响 关于新基建和互联网科技 猫创互联网科技 佰商互联网科技有限公司 上海电发互联网科技有限公司 互联网金融中的现代科技 厦门比较好的科技互联网公司 南平创想时代互联网科技有限公司 消费医药和互联网科技 浙南科技城互联网大厦建设工程 互联网科技和法律行业 济南有互联网科技公司吗 互联网科技快讯热点 全球科技与互联网公司市值变化 互联网科技机房 互联网的科技体现在哪里 亚光科技低轨卫星互联网 互联网科技公司经营范围 湖南永感互联网科技有限公司 有马互联网科技 奔汉互联网科技 碳银互联网科技有限公司 互联网科技公司有哪些 互联网科技美容 湖南一路畅行互联网科技 元气玛特互联网科技公司是外包吗 互联网的黑科技实验室
0