Sqoop 安装完整教程(基于 WSL2 + Ubuntu 24.04)

本教程详细介绍了在WSL2+Ubuntu24.04环境下安装配置Sqoop1.4.7的完整流程:

  1. 环境准备
  • Java8+、Hadoop3.3.6、MySQL8.0.45已安装
  • 验证命令:java -version/hadoop version/mysql --version
  1. 安装步骤
  • 下载Sqoop1.4.7并解压到/usr/local
  • 配置环境变量(SQOOP_HOME和PATH)
  • 安装MySQL JDBC驱动到Sqoop/lib目录
  • 解决依赖问题(commons-lang等jar包)
  1. 功能验证
  • 测试连接MySQL:sqoop list-databases
  • 数据导入测试:MySQL→HDFS
  • 数据导出测试:HDFS→MySQL
  1. 常见问题
  • NoClassDefFoundError:需添加commons-lang等依赖
  • MySQL连接问题:检查服务状态和权限
  • 警告信息:HBase等组件缺失警告可忽略
  1. 后续建议
  • 学习增量导入、条件过滤等高级功能
  • 探索与Hive的集成
  • 掌握并行度控制和数据格式处理

安装完成后,用户已具备在Hadoop和关系型数据库间迁移数据的能力。


教程包含完整的一键安装脚本和详细的排错指南。


(AI 总结版)Windows 11 WSL Ubuntu 环境:安装 Hadoop 完整指南


(AI 总结版)在 Windows 11 WSL Ubuntu 上安装和使用 Hive 完整教程


Sqoop 安装完整教程(基于 WSL2 + Ubuntu 24.04)


本教程基于之前的安装过程整理,适用于 Windows 11 + WSL2 + Ubuntu 24.04 环境。


一、前置环境要求

在安装 Sqoop 之前,请确保以下环境已就绪:

环境要求 检查命令 版本要求
Java java -version Java 8 或更高版本
Hadoop hadoop version Hadoop 2.x 或 3.x
MySQL mysql --version MySQL 5.x 或 8.x

bash

复制代码
# 检查各组件版本
java -version
hadoop version
mysql --version

bash 复制代码
mumu@MuJinqiu:~$ hadoop version
Hadoop 3.3.6
Source code repository https://github.com/apache/hadoop.git -r 1be78238728da9266a4f88195058f08fd012bf9c
Compiled by ubuntu on 2023-06-18T08:22Z
Compiled on platform linux-x86_64
Compiled with protoc 3.7.1
From source with checksum 5652179ad55f76cb287d9c633bb53bbd
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.3.6.jar

🎉完美!Hadoop 3.3.6 已经安装好了!


二、下载 Sqoop

bash

复制代码
# 进入用户目录
cd ~

# 下载 Sqoop 1.4.7(稳定版本,针对 Hadoop 2.6.0 的二进制包)
wget https://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

如果 wget 下载较慢,可以用浏览器下载后,通过 MobaXterm 拖拽到 WSL 目录。


三、安装 Sqoop

bash

复制代码
# 1. 解压到 /usr/local 目录
sudo tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local/

# 2. 进入 /usr/local 目录
cd /usr/local

# 3. 重命名文件夹(方便后续使用)
sudo mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop

# 4. 修改所有者(将 mumu 换成你的用户名)
sudo chown -R $(whoami):$(whoami) sqoop

四、配置环境变量

bash

复制代码
# 编辑 .bashrc 文件
nano ~/.bashrc

在文件末尾添加以下内容:

bash

复制代码
# Sqoop 环境变量
export SQOOP_HOME=/usr/local/sqoop
export PATH=$PATH:$SQOOP_HOME/bin

保存退出(Ctrl+XY → 回车),然后执行:

bash

复制代码
source ~/.bashrc

五、验证安装

bash

复制代码
sqoop version

预期输出:

text

复制代码
Sqoop 1.4.7
...

如果出现关于 HBase、HCatalog 等的警告,属于正常现象,不影响核心功能。


六、配置 Sqoop

bash

复制代码
# 1. 进入配置目录
cd $SQOOP_HOME/conf

# 2. 复制配置文件模板
cp sqoop-env-template.sh sqoop-env.sh

# 3. 编辑配置文件
nano sqoop-env.sh

找到并修改以下配置(取消注释并填写路径):

bash

复制代码
# 设置 Hadoop 安装路径
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop

# 如果以后需要连接 Hive,取消下面这行的注释
# export HIVE_HOME=/usr/local/hive

七、安装 MySQL JDBC 驱动

Sqoop 需要 JDBC 驱动才能连接 MySQL。

bash

复制代码
# 1. 下载 JDBC 驱动
cd ~
wget https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar

# 2. 复制到 Sqoop 的 lib 目录
sudo cp mysql-connector-j-8.0.33.jar /usr/local/sqoop/lib/

通过 apt 安装的 MySQL 客户端(mysql 命令)和 Sqoop 需要的 MySQL JDBC 驱动 是两回事,互不影响。

bash 复制代码
mumu@MuJinqiu:~$ mysql --version
mysql  Ver 8.0.45-0ubuntu0.24.04.1 for Linux on x86_64 ((Ubuntu))

简单解释

项目 是什么 你用的是什么 状态
MySQL 客户端 (mysql 命令) 用来连接和管理数据库的命令行工具 已安装 ✅ 不需要重装
MySQL JDBC 驱动 一个 .jar 文件,让 Java 程序(如 Sqoop)能连接 MySQL 未安装 ⏳ 需要下载安装

结论 :你不需要重新安装 MySQL 客户端,但需要下载 JDBC 驱动放到 Sqoop 的 lib 目录下。


八、解决依赖缺失问题

bash 复制代码
May 18 14:23:37 MuJinqiu systemd[1]: Starting mysql.service - MySQL Community Server...
May 18 14:23:37 MuJinqiu systemd[1]: Started mysql.service - MySQL Community Server.
mumu@MuJinqiu:~$ ^C
mumu@MuJinqiu:~$ sqoop list-databases \
--connect jdbc:mysql://localhost:3306/ \
--username root \
--password 123456
Warning: /usr/local/sqoop/../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /usr/local/sqoop/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /usr/local/sqoop/../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
2026-05-25 17:16:05,910 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
2026-05-25 17:16:05,937 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
2026-05-25 17:16:06,020 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
        at org.apache.sqoop.manager.MySQLManager.initOptionDefaults(MySQLManager.java:73)
        at org.apache.sqoop.manager.SqlManager.<init>(SqlManager.java:89)
        at com.cloudera.sqoop.manager.SqlManager.<init>(SqlManager.java:33)
        at org.apache.sqoop.manager.GenericJdbcManager.<init>(GenericJdbcManager.java:51)
        at com.cloudera.sqoop.manager.GenericJdbcManager.<init>(GenericJdbcManager.java:30)
        at org.apache.sqoop.manager.CatalogQueryManager.<init>(CatalogQueryManager.java:46)
        at com.cloudera.sqoop.manager.CatalogQueryManager.<init>(CatalogQueryManager.java:31)
        at org.apache.sqoop.manager.InformationSchemaManager.<init>(InformationSchemaManager.java:38)
        at com.cloudera.sqoop.manager.InformationSchemaManager.<init>(InformationSchemaManager.java:31)
        at org.apache.sqoop.manager.MySQLManager.<init>(MySQLManager.java:65)
        at org.apache.sqoop.manager.DefaultManagerFactory.accept(DefaultManagerFactory.java:67)
        at org.apache.sqoop.ConnFactory.getManager(ConnFactory.java:184)
        at org.apache.sqoop.tool.BaseSqoopTool.init(BaseSqoopTool.java:272)
        at org.apache.sqoop.tool.ListDatabasesTool.run(ListDatabasesTool.java:44)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:82)
        at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
        at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils
        at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 20 more

这个错误是因为 Sqoop 缺少一个依赖库:commons-lang。这是 Sqoop 运行必需的,但安装包没有自动包含。


如果还有其他缺失的依赖

Sqoop 可能还需要其他 commons 相关的包。如果上面的命令执行后还报类似的错误(比如 NoClassDefFoundError: org/apache/commons/xxx),依次下载以下包:

bash 复制代码
# commons-lang 已下载
wget https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar

# commons-logging(日志相关)
wget https://repo1.maven.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar

# commons-configuration(配置相关)
wget https://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar

# 复制到 lib 目录
sudo cp commons-*.jar /usr/local/sqoop/lib/

一次性解决(推荐)

为了避免逐个下载,可以执行以下命令批量下载常用的 Sqoop 依赖

bash 复制代码
cd ~

# 下载多个依赖
wget https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
wget https://repo1.maven.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
wget https://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar
wget https://repo1.maven.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.jar

# 全部复制到 Sqoop lib
sudo cp commons-*.jar /usr/local/sqoop/lib/

# 再次测试
sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456

Sqoop 安装后可能缺少 commons-lang 等依赖,需要手动添加:

bash

复制代码
cd ~

# 下载常用依赖
wget https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
wget https://repo1.maven.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
wget https://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar
wget https://repo1.maven.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.jar

# 全部复制到 Sqoop lib 目录
sudo cp commons-*.jar /usr/local/sqoop/lib/

bash 复制代码
mumu@MuJinqiu:~$ sqoop version
Warning: /usr/local/sqoop/../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /usr/local/sqoop/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /usr/local/sqoop/../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
2026-05-25 17:14:10,892 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
Sqoop 1.4.7
git commit id 2328971411f57f0cb683dfb79d19d4d19d185dd8
Compiled by maugli on Thu Dec 21 15:59:58 STD 2017

Sqoop 已经成功安装了! 版本是 1.4.7。

那些 Warning 警告信息是正常的,因为你的环境里没有安装 HBase、HCatalog、Accumulo、Zookeeper 这些组件。这些警告不影响 Sqoop 的核心功能(MySQL ↔ HDFS/Hive 的数据导入导出),可以暂时忽略。


bash 复制代码
mumu@MuJinqiu:~$ sudo service mysql status
● mysql.service - MySQL Community Server
     Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-05-18 14:23:37 CST; 1 week 0 days ago
   Main PID: 666735 (mysqld)
     Status: "Server is operational"
      Tasks: 58 (limit: 19181)
     Memory: 426.4M (peak: 447.5M)
        CPU: 16min 15.889s
     CGroup: /system.slice/mysql.service
             └─666735 /usr/sbin/mysqld

May 18 14:23:37 MuJinqiu systemd[1]: Starting mysql.service - MySQL Community Server...
May 18 14:23:37 MuJinqiu systemd[1]: Started mysql.service - MySQL Community Server.

MySQL 服务已经在运行了 !状态是 active (running),很好。

九、测试 Sqoop 连接 MySQL

bash

bash 复制代码
sqoop list-databases \
--connect jdbc:mysql://localhost:3306/ \
--username root \
--password 你的MySQL密码

预期输出:列出 MySQL 中的所有数据库(如 mysql, information_schema, test 等)。

bash 复制代码
2026-05-25 17:17:09 (377 KB/s) - 'commons-lang-2.6.jar' saved [284220/284220]

mumu@MuJinqiu:~$ sudo cp commons-lang-2.6.jar /usr/local/sqoop/lib/
mumu@MuJinqiu:~$ sqoop list-databases \
--connect jdbc:mysql://localhost:3306/ \
--username root \
--password 123456
Warning: /usr/local/sqoop/../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /usr/local/sqoop/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /usr/local/sqoop/../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
2026-05-25 17:17:28,793 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
2026-05-25 17:17:28,824 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
2026-05-25 17:17:28,910 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
mysql
information_schema
performance_schema
sys
lee
A2608
metastore

🎉 成功了! Sqoop 已经可以正常连接 MySQL 了!

从输出可以看到,Sqoop 成功列出了 MySQL 中的所有数据库


关于那些警告

你现在看到的警告分为两类,都不影响核心功能:

警告类型 含义 需要处理吗?
Warning: /usr/local/sqoop/../hbase does not exist 没有安装 HBase ❌ 不需要,除非你要用 HBase
Loading class com.mysql.jdbc.Driver'... 旧的驱动类名写法 ❌ 不需要,只是提示驱动已自动注册

十、完整安装脚本(一键复制)

如果你已经配置好 Hadoop 和 MySQL,可以一次性执行以下命令完成安装:

bash

bash 复制代码
#!/bin/bash
# Sqoop 一键安装脚本

cd ~

# 下载 Sqoop
wget https://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

# 解压安装
sudo tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local/
cd /usr/local
sudo mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop
sudo chown -R $(whoami):$(whoami) sqoop

# 配置环境变量
echo 'export SQOOP_HOME=/usr/local/sqoop' >> ~/.bashrc
echo 'export PATH=$PATH:$SQOOP_HOME/bin' >> ~/.bashrc
source ~/.bashrc

# 配置 Sqoop
cd $SQOOP_HOME/conf
cp sqoop-env-template.sh sqoop-env.sh

# 下载并复制依赖
cd ~
wget https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar
wget https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
wget https://repo1.maven.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
wget https://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar
wget https://repo1.maven.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.jar

sudo cp mysql-connector-j-*.jar /usr/local/sqoop/lib/
sudo cp commons-*.jar /usr/local/sqoop/lib/

# 验证安装
sqoop version

echo "Sqoop 安装完成!"

十一、测试导入/导出功能

导入 MySQL 数据到 HDFS

bash

bash 复制代码
# 1. 在 MySQL 中准备测试数据
mysql -u root -p你的密码 -e "CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE IF NOT EXISTS users (id INT, name VARCHAR(20)); INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob');"

# 2. 用 Sqoop 导入到 HDFS
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password 你的密码 \
--table users \
--target-dir /user/mumu/users \
--m 1

# 3. 查看导入结果
hdfs dfs -ls /user/mumu/users
hdfs dfs -cat /user/mumu/users/part-m-00000

预期输出:

text

复制代码
1,Alice
2,Bob

快速验证 Sqoop 导入功能

你可以试试从 MySQL 导入一张表到 HDFS:

1. 先在 MySQL 中准备测试数据

bash

复制代码
mysql -u root -p123456 -e "CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE IF NOT EXISTS users (id INT, name VARCHAR(20)); INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob');"
2. 用 Sqoop 导入到 HDFS

bash

复制代码
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password 123456 \
--table users \
--target-dir /user/mumu/users \
--m 1
3. 查看导入结果

bash

复制代码
hdfs dfs -ls /user/mumu/users
hdfs dfs -cat /user/mumu/users/part-m-00000
bash 复制代码
mumu@MuJinqiu:~/bigdata/2026$ mysql
ERROR 1045 (28000): Access denied for user 'mumu'@'localhost' (using password: NO)
mumu@MuJinqiu:~/bigdata/2026$ mysql -u root -p123456 -e "CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE IF NOT EXISTS users (id INT, name VARCHAR(20)); INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob');"
mysql: [Warning] Using a password on the command line interface can be insecure.

这个命令执行成功了!虽然有两个提示,但都是正常的:

  1. 第一个错误Access denied for user 'mumu'):因为你直接输入 mysql 没有指定用户名,系统默认用你当前的 WSL 用户名(mumu)去登录,但这个用户没有 MySQL 权限。这不是问题 ,你平时都用 mysql -u root -p 登录就行。

  2. 第二个命令的警告Using a password on the command line...):只是提醒你在命令行里直接写密码不够安全,不影响执行。

验证数据是否创建成功

执行以下命令查看刚才创建的表

bash 复制代码
mysql -u root -p123456 -e "USE test; SELECT * FROM users;"

应该能看到:

bash 复制代码
+------+-------+
| id   | name  |
+------+-------+
|    1 | Alice |
|    2 | Bob   |
+------+-------+
然后执行 Sqoop 导入到 HDFS

bash

复制代码
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password 123456 \
--table users \
--target-dir /user/mumu/users \
--m 1

如果成功,你会看到 MapReduce 作业运行的日志,最后显示 Imported ... records


查看导入结果

bash

复制代码
hdfs dfs -cat /user/mumu/users/part-m-00000

应该输出:

text

复制代码
1,Alice
2,Bob
bash 复制代码
mumu@MuJinqiu:~/bigdata/2026$ hdfs dfs -cat /user/mumu/users/part-m-00000
1,Alice
2,Bob
mumu@MuJinqiu:~/bigdata/2026$

完美!Sqoop 数据导入成功了!

你已经在 Hadoop 和 MySQL 之间完成了第一次数据迁移。这是一个里程碑式的进展,标志着你的大数据开发环境已经完全配置好并可以正常使用。

常用 Sqoop 命令示例

操作 命令
列出数据库 sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456
列出表 sqoop list-tables --connect jdbc:mysql://localhost:3306/数据库名 --username root --password 123456
导入表到 HDFS sqoop import --connect jdbc:mysql://localhost:3306/数据库名 --username root --password 123456 --table 表名 --target-dir /路径 --m 1
导出到 MySQL sqoop export --connect jdbc:mysql://localhost:3306/数据库名 --username root --password 123456 --table 表名 --export-dir /hdfs上的数据路径
执行 SQL 查询 sqoop eval --connect jdbc:mysql://localhost:3306/数据库名 --username root --password 123456 --query "SELECT * FROM 表名"

尝试 Hive 集成:如果后面需要用到 Hive,可以安装 Hive 并配置 Sqoop 直接导入到 Hive 表


十二、常见问题及解决方法

问题 解决方法
command not found: sqoop 检查环境变量,执行 source ~/.bashrc
NoClassDefFoundError: org/apache/commons/lang/StringUtils 下载 commons-lang-2.6.jar 并复制到 Sqoop lib 目录
Access denied for user 确认 MySQL 用户名和密码正确
Connection refused 确认 MySQL 服务已启动:sudo service mysql status
HBase/HCatalog 警告 不影响核心功能,可忽略;或安装对应组件消除警告

十三、安装完成标志

当你能成功执行 sqoop list-databases 并看到数据库列表时,说明 Sqoop 安装配置完成。


我的大数据环境总览

组件 版本 状态
操作系统 Ubuntu 24.04 (WSL2)
Java OpenJDK 17
Hadoop 3.3.6
MySQL 8.0.45
Sqoop 1.4.7
SSH 服务 OpenSSH

现在能做什么

1. 将 MySQL 数据导入 HDFS(已完成)

bash

复制代码
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password 123456 \
--table users \
--target-dir /user/mumu/users \
--m 1

2. 将 HDFS 数据导出回 MySQL

bash

复制代码
# 先在 MySQL 中创建空表
mysql -u root -p123456 -e "USE test; CREATE TABLE IF NOT EXISTS users_backup (id INT, name VARCHAR(20));"

# 导出
sqoop export \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password 123456 \
--table users_backup \
--export-dir /user/mumu/users \
--input-fields-terminated-by ','

3. 增量导入(只导入新增数据)

bash

复制代码
# 假设新增了 id=3 的数据
mysql -u root -p123456 -e "USE test; INSERT INTO users VALUES (3, 'Charlie');"

# 增量导入
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password 123456 \
--table users \
--target-dir /user/mumu/users_incremental \
--m 1 \
--check-column id \
--last-value 2

4. 导入到 Hive(如果以后安装了 Hive)

bash

复制代码
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password 123456 \
--table users \
--hive-import \
--hive-table default.users

我的环境配置总结

组件 状态 验证方式
Java java -version
Hadoop hadoop version + hdfs dfs -ls /
MySQL mysql -u root -p
Sqoop sqoop version + 刚才的导入
MySQL → HDFS 导入 已测试成功

后续学习建议

  1. 熟悉 Sqoop 参数--where(条件过滤)、--columns(指定列)、--query(自定义SQL)

  2. 了解控制并行度-m(mapper 数量),大表时可以设置大于 1

  3. 注意格式问题--fields-terminated-by--null-string 处理空值

  4. 学习作业管理--hadoop-home--mapreduce-job-name

相关推荐
一叶龙洲5 小时前
向日葵远程Ubuntu,支持隐私屏
linux·运维·ubuntu
寒水馨6 小时前
Linux下载、安装llama.cpp-b10068(附安装包llama-b10068-bin-ubuntu-vulkan-x64.tar.gz)
linux·ubuntu·llm·llama·本地部署·llama.cpp·推理引擎
hkj88081 天前
Ubuntu 切换java版本
java·linux·ubuntu
hkj88082 天前
Ubuntu 20.04 安装 OpenJDK 17
linux·运维·ubuntu
sulikey2 天前
服务器安装Docker教程。如何在云服务器安装Docker容器?
运维·服务器·ubuntu·docker·安装教程·云服务器
IT曙光3 天前
在Ubuntu上本地部署Dify?
linux·ubuntu
默默提升实验室3 天前
Ubuntu 22.04.5 配置静态IP,手动安装SSH
ubuntu
初圣魔门首席弟子3 天前
TypeScript 类型系统完全指南:从基础到高级工具类型(知识库版)
linux·运维·ubuntu
TARDIS_20203 天前
VMware配置ubuntu26.04虚拟机桥接
ubuntu
雷工笔记3 天前
什么是Ubuntu?
linux·运维·ubuntu