本教程详细介绍了在WSL2+Ubuntu24.04环境下安装配置Sqoop1.4.7的完整流程:
- 环境准备
- Java8+、Hadoop3.3.6、MySQL8.0.45已安装
- 验证命令:java -version/hadoop version/mysql --version
- 安装步骤
- 下载Sqoop1.4.7并解压到/usr/local
- 配置环境变量(SQOOP_HOME和PATH)
- 安装MySQL JDBC驱动到Sqoop/lib目录
- 解决依赖问题(commons-lang等jar包)
- 功能验证
- 测试连接MySQL:sqoop list-databases
- 数据导入测试:MySQL→HDFS
- 数据导出测试:HDFS→MySQL
- 常见问题
- NoClassDefFoundError:需添加commons-lang等依赖
- MySQL连接问题:检查服务状态和权限
- 警告信息:HBase等组件缺失警告可忽略
- 后续建议
- 学习增量导入、条件过滤等高级功能
- 探索与Hive的集成
- 掌握并行度控制和数据格式处理
安装完成后,用户已具备在Hadoop和关系型数据库间迁移数据的能力。
教程包含完整的一键安装脚本和详细的排错指南。
(AI 总结版)Windows 11 WSL Ubuntu 环境:安装 Hadoop 完整指南
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+X → Y → 回车),然后执行:
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 驱动 是两回事,互不影响。
bashmumu@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 依赖
bashcd ~ # 下载多个依赖 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 13. 查看导入结果
bash
hdfs dfs -ls /user/mumu/users hdfs dfs -cat /user/mumu/users/part-m-00000
bashmumu@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.这个命令执行成功了!虽然有两个提示,但都是正常的:
第一个错误 (
Access denied for user 'mumu'):因为你直接输入mysql没有指定用户名,系统默认用你当前的 WSL 用户名(mumu)去登录,但这个用户没有 MySQL 权限。这不是问题 ,你平时都用mysql -u root -p登录就行。第二个命令的警告 (
Using a password on the command line...):只是提醒你在命令行里直接写密码不够安全,不影响执行。
验证数据是否创建成功
执行以下命令查看刚才创建的表
bashmysql -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
bashmumu@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 导入 | ✅ | 已测试成功 |
后续学习建议
-
熟悉 Sqoop 参数 :
--where(条件过滤)、--columns(指定列)、--query(自定义SQL) -
了解控制并行度 :
-m(mapper 数量),大表时可以设置大于 1 -
注意格式问题 :
--fields-terminated-by、--null-string处理空值 -
学习作业管理 :
--hadoop-home、--mapreduce-job-name等