sqoop的安装与简单使用


在这里插入图片描述

一、安装

1、上传,解压,重命名

sqoop下载地址
提起码:1234

cd /opt/modules
# 上传
# 解压
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/installs
# 重命名
mv /opt/modules/sqoop-1.4.7.bin__hadoop-2.6.0 /opt/modules/sqoop

2、修改环境变量

export SQOOP_HOME=/opt/installs/sqoop
export PATH=$PATH:$SQOOP_HOME/bin

3、修改配置文件

# 重命名配置文件
mv sqoop-env-template.sh sqoop-env.sh

#添加如下配置:
export HADOOP_COMMON_HOME=/opt/installs/hadoop
export HADOOP_MAPRED_HOME=/opt/installs/hadoop
export HIVE_HOME=/opt/installs/hive
export HCAT_HOME=/opt/installs/hive/hcatalog

4、上传驱动包

将mysql8.0的驱动包放入 sqoop 的 lib 目录下

5、拷贝jar包

cp /opt/installs/hive/lib/commons-lang-2.6.jar /opt/installs/sqoop/lib/
cp /opt/installs/hive/lib/hive-common-3.1.2.jar /opt/installs/sqoop/lib/

二、import命令

1、将mysql的数据导入到hdfs上

sqoop import  \
  --connect jdbc:mysql://node01:3306/数据库的名字  \
  --username root  \
  --password 123456 \
  --table emp \  # 有query 不用指定
  --target-dir /hdfs上的路径  \
  --delete-target-dir  \  #如果hdfs上存在该文件夹就删除
  --query 'select * from emp where empno < 7788 and $CONDITIONS'  \  # sqoop也支持sql语句
  --split-by empno  
  -m 1  

有query的时候sql语句中必须有$CONDITIONS、后面参数必须有split-by或者-m 1

2、将mysql的数据导入到hive上

sqoop import \
  --connect jdbc:mysql://node01:3306/数据库的名字 \
  --username root \
  --password 123456 \
  --table emp \
  --hive-import \
  --hive-overwrite \
  --hive-table emp \
  --hive-database hive数据库的名字  \
  -m 1

3、增量导入数据

两种方式:
1、sql语句加where条件
2、last-value

  sqoop import \
  --connect jdbc:mysql://node01:3306/数据库的名字\
  --username root \
  --password 123456 \
  --table emp \
  --target-dir /sqoop/dt=20240903 \
  -m 1 \
  --check-column empno \  # 必须写,指定检出的列
  --incremental append \  # 增量
  --last-value 0 \
  --fields-terminated-by '\t'  #指定导入数据的分隔符

三、export命令

1、从hdfs导出到mysql中

mysql中的表需要提前创建出来

  sqoop export \
  --connect jdbc:mysql://node01:3306/mydb01 \
  --username root \
  --password 123456 \
  --table user \
  --export-dir '/sqoop/aaa.txt' \
  --input-fields-terminated-by ',' \
  --columns 'id,age'  \  # 指定mysql中的列,要与hdfs文件内容对应
  -m 1

2、从hive导出到mysql中

sqoop export \
--connect jdbc:mysql://node01:3306/mydb01 \
--username root \
--password 123456 \
--table user \  # mysql的表
--hcatalog-database mydb01 \  # hive的数据库
--hcatalog-table par3 \  #hive的表
-m 1

四、sqoop的job任务

sqoop job --create jjoobb --sqoop import \
# 编写import代码

sqoop job --exec jjoobb
# 执行job任务

sqoop job --delete jjoobb
# 删除job任务

sqoop job --list
# 查看所有的job任务
### Sqoop安装教程 Sqoop 是一种用于在 Hadoop 和关系型数据库之间传输数据的工具。以下是关于其安装和配置的方法: #### 1. 下载 Sqoop 可以从 Apache 官方网站下载最新版本的 Sqoop。通常情况下,可以使用以下命令完成下载: ```bash wget https://downloads.apache.org/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz ``` 解压文件到目标目录: ```bash tar -xzvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local/ ln -s /usr/local/sqoop-1.4.7.bin__hadoop-2.6.0 /usr/local/sqoop ``` #### 2. 配置环境变量 编辑 `~/.bashrc` 文件并将 Sqoop 添加至 PATH 中: ```bash export SQOOP_HOME=/usr/local/sqoop export PATH=$PATH:$SQOOP_HOME/bin source ~/.bashrc ``` 验证安装是否成功: ```bash sqoop version ``` 如果显示 Sqoop 版本号,则说明安装成功。 --- ### Sqoop 使用指南 #### 基础概念 Sqoop 提供了一种简单的方式,在 HDFS 和结构化数据存储(如 MySQL 或 Oracle 数据库)之间移动大量数据。它依赖于 MapReduce 实现高效的数据处理[^1]。 #### 导入数据示例 假设有一个名为 `mytable` 的表位于 Cassandra 数据库中,并希望将其导入到 HDFS 上的一个指定路径 `/user/hadoop/cassandra_data`。可以通过以下命令实现此功能: ```bash sqoop import \ --connect jdbc:cassandra://localhost:9042/mykeyspace \ --table mytable \ --target-dir /user/hadoop/cassandra_data \ --num-mappers 4 ``` 上述命令中的参数解释如下: - `--connect`: 指定 JDBC 连接字符串。 - `--table`: 要导入的目标表名称。 - `--target-dir`: 将数据保存到 HDFS 的具体位置。 - `--num-mappers`: 设置并行执行的任务数量以提高性能[^2]。 #### 解决常见错误 当运行 Sqoop 作业时可能会遇到一些异常情况,例如 Hive Metastore 初始化失败等问题。这类问题可能由连接超时或其他网络原因引起。参考以下日志片段可以帮助定位问题所在: ``` at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:54)[^3] ``` 这表明 Hive Metastore 可能未正常启动或者存在权限不足的情况。 --- ### 总结 通过以上步骤即可顺利完成 Sqoop安装以及基本使用的入门学习。需要注意的是实际应用过程中还需要针对不同的数据库调整相应的驱动程序和支持包。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzhlizihang

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值