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

相关推荐
Nick.Q11 小时前
Ubuntu 24.04 从零跑通 OpenTitan:IC 验证工程师实录(Verilator + VCS + Verdi)
linux·ubuntu·systemverilog
say_fall11 小时前
操作系统与进程核心全解:从冯诺依曼到fork系统调用
android·linux·运维·服务器·学习·ubuntu
сокол1 天前
【网安-Web渗透测试-靶场系列】AWD-Platform(ctf-hub)
linux·服务器·ubuntu·网络安全·docker
tianrun12341 天前
Ubuntu 24.04 安装 Fcitx5 + Rime + 搜狗词库(替代 IBus 与 Linux 搜狗输入法)
linux·运维·ubuntu
李昊哲小课1 天前
Ubuntu 在线安装最新版 Nginx
nginx·ubuntu
程序手艺人1 天前
【日常开发】 VSCode Remote SSH 在 Ubuntu 18.04 (GLIBC 2.27) 上的解决方案
vscode·ubuntu·ssh
相思难忘成疾1 天前
Ubuntu 入门:安装、网络、软件一站式教程
linux·网络·ubuntu
Kay_Liang1 天前
VirtualBox NAT 网络实现三台虚拟机互联踩坑实录
网络·windows·笔记·ubuntu·网络安全
大唐游子1 天前
wsl安装高版本ubuntu(24.04)
linux·ubuntu