本教程详细介绍了在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
1mumu@MuJinqiu:~$ hadoop version 2Hadoop 3.3.6 3Source code repository https://github.com/apache/hadoop.git -r 1be78238728da9266a4f88195058f08fd012bf9c 4Compiled by ubuntu on 2023-06-18T08:22Z 5Compiled on platform linux-x86_64 6Compiled with protoc 3.7.1 7From source with checksum 5652179ad55f76cb287d9c633bb53bbd 8This 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 驱动 是两回事,互不影响。1mumu@MuJinqiu:~$ mysql --version 2mysql 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目录下。
八、解决依赖缺失问题
1May 18 14:23:37 MuJinqiu systemd[1]: Starting mysql.service - MySQL Community Server... 2May 18 14:23:37 MuJinqiu systemd[1]: Started mysql.service - MySQL Community Server. 3mumu@MuJinqiu:~$ ^C 4mumu@MuJinqiu:~$ sqoop list-databases \ 5--connect jdbc:mysql://localhost:3306/ \ 6--username root \ 7--password 123456 8Warning: /usr/local/sqoop/../hbase does not exist! HBase imports will fail. 9Please set $HBASE_HOME to the root of your HBase installation. 10Warning: /usr/local/sqoop/../hcatalog does not exist! HCatalog jobs will fail. 11Please set $HCAT_HOME to the root of your HCatalog installation. 12Warning: /usr/local/sqoop/../accumulo does not exist! Accumulo imports will fail. 13Please set $ACCUMULO_HOME to the root of your Accumulo installation. 14Warning: /usr/local/sqoop/../zookeeper does not exist! Accumulo imports will fail. 15Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation. 162026-05-25 17:16:05,910 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7 172026-05-25 17:16:05,937 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 182026-05-25 17:16:06,020 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset. 19Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils 20 at org.apache.sqoop.manager.MySQLManager.initOptionDefaults(MySQLManager.java:73) 21 at org.apache.sqoop.manager.SqlManager.<init>(SqlManager.java:89) 22 at com.cloudera.sqoop.manager.SqlManager.<init>(SqlManager.java:33) 23 at org.apache.sqoop.manager.GenericJdbcManager.<init>(GenericJdbcManager.java:51) 24 at com.cloudera.sqoop.manager.GenericJdbcManager.<init>(GenericJdbcManager.java:30) 25 at org.apache.sqoop.manager.CatalogQueryManager.<init>(CatalogQueryManager.java:46) 26 at com.cloudera.sqoop.manager.CatalogQueryManager.<init>(CatalogQueryManager.java:31) 27 at org.apache.sqoop.manager.InformationSchemaManager.<init>(InformationSchemaManager.java:38) 28 at com.cloudera.sqoop.manager.InformationSchemaManager.<init>(InformationSchemaManager.java:31) 29 at org.apache.sqoop.manager.MySQLManager.<init>(MySQLManager.java:65) 30 at org.apache.sqoop.manager.DefaultManagerFactory.accept(DefaultManagerFactory.java:67) 31 at org.apache.sqoop.ConnFactory.getManager(ConnFactory.java:184) 32 at org.apache.sqoop.tool.BaseSqoopTool.init(BaseSqoopTool.java:272) 33 at org.apache.sqoop.tool.ListDatabasesTool.run(ListDatabasesTool.java:44) 34 at org.apache.sqoop.Sqoop.run(Sqoop.java:147) 35 at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:82) 36 at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183) 37 at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234) 38 at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243) 39 at org.apache.sqoop.Sqoop.main(Sqoop.java:252) 40Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils 41 at java.net.URLClassLoader.findClass(URLClassLoader.java:387) 42 at java.lang.ClassLoader.loadClass(ClassLoader.java:418) 43 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) 44 at java.lang.ClassLoader.loadClass(ClassLoader.java:351) 45 ... 20 more
这个错误是因为 Sqoop 缺少一个依赖库:commons-lang。这是 Sqoop 运行必需的,但安装包没有自动包含。
如果还有其他缺失的依赖
Sqoop 可能还需要其他 commons 相关的包。如果上面的命令执行后还报类似的错误(比如
NoClassDefFoundError: org/apache/commons/xxx),依次下载以下包:1# commons-lang 已下载 2wget https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar 3 4# commons-logging(日志相关) 5wget https://repo1.maven.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar 6 7# commons-configuration(配置相关) 8wget https://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar 9 10# 复制到 lib 目录 11sudo cp commons-*.jar /usr/local/sqoop/lib/一次性解决(推荐)
为了避免逐个下载,可以执行以下命令批量下载常用的 Sqoop 依赖
1cd ~ 2 3# 下载多个依赖 4wget https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar 5wget https://repo1.maven.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar 6wget https://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar 7wget https://repo1.maven.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.jar 8 9# 全部复制到 Sqoop lib 10sudo cp commons-*.jar /usr/local/sqoop/lib/ 11 12# 再次测试 13sqoop 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/
1mumu@MuJinqiu:~$ sqoop version 2Warning: /usr/local/sqoop/../hbase does not exist! HBase imports will fail. 3Please set $HBASE_HOME to the root of your HBase installation. 4Warning: /usr/local/sqoop/../hcatalog does not exist! HCatalog jobs will fail. 5Please set $HCAT_HOME to the root of your HCatalog installation. 6Warning: /usr/local/sqoop/../accumulo does not exist! Accumulo imports will fail. 7Please set $ACCUMULO_HOME to the root of your Accumulo installation. 8Warning: /usr/local/sqoop/../zookeeper does not exist! Accumulo imports will fail. 9Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation. 102026-05-25 17:14:10,892 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7 11Sqoop 1.4.7 12git commit id 2328971411f57f0cb683dfb79d19d4d19d185dd8 13Compiled by maugli on Thu Dec 21 15:59:58 STD 2017
✅ Sqoop 已经成功安装了! 版本是 1.4.7。
那些
Warning警告信息是正常的,因为你的环境里没有安装 HBase、HCatalog、Accumulo、Zookeeper 这些组件。这些警告不影响 Sqoop 的核心功能(MySQL ↔ HDFS/Hive 的数据导入导出),可以暂时忽略。
1mumu@MuJinqiu:~$ sudo service mysql status 2● mysql.service - MySQL Community Server 3 Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled) 4 Active: active (running) since Mon 2026-05-18 14:23:37 CST; 1 week 0 days ago 5 Main PID: 666735 (mysqld) 6 Status: "Server is operational" 7 Tasks: 58 (limit: 19181) 8 Memory: 426.4M (peak: 447.5M) 9 CPU: 16min 15.889s 10 CGroup: /system.slice/mysql.service 11 └─666735 /usr/sbin/mysqld 12 13May 18 14:23:37 MuJinqiu systemd[1]: Starting mysql.service - MySQL Community Server... 14May 18 14:23:37 MuJinqiu systemd[1]: Started mysql.service - MySQL Community Server.
✅ MySQL 服务已经在运行了!状态是
active (running),很好。
九、测试 Sqoop 连接 MySQL
bash
1sqoop list-databases \ 2--connect jdbc:mysql://localhost:3306/ \ 3--username root \ 4--password 你的MySQL密码
预期输出:列出 MySQL 中的所有数据库(如 mysql, information_schema, test 等)。
12026-05-25 17:17:09 (377 KB/s) - ‘commons-lang-2.6.jar’ saved [284220/284220] 2 3mumu@MuJinqiu:~$ sudo cp commons-lang-2.6.jar /usr/local/sqoop/lib/ 4mumu@MuJinqiu:~$ sqoop list-databases \ 5--connect jdbc:mysql://localhost:3306/ \ 6--username root \ 7--password 123456 8Warning: /usr/local/sqoop/../hbase does not exist! HBase imports will fail. 9Please set $HBASE_HOME to the root of your HBase installation. 10Warning: /usr/local/sqoop/../hcatalog does not exist! HCatalog jobs will fail. 11Please set $HCAT_HOME to the root of your HCatalog installation. 12Warning: /usr/local/sqoop/../accumulo does not exist! Accumulo imports will fail. 13Please set $ACCUMULO_HOME to the root of your Accumulo installation. 14Warning: /usr/local/sqoop/../zookeeper does not exist! Accumulo imports will fail. 15Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation. 162026-05-25 17:17:28,793 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7 172026-05-25 17:17:28,824 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 182026-05-25 17:17:28,910 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset. 19Loading 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. 20mysql 21information_schema 22performance_schema 23sys 24lee 25A2608 26metastore
🎉 成功了! Sqoop 已经可以正常连接 MySQL 了!
从输出可以看到,Sqoop 成功列出了 MySQL 中的所有数据库
关于那些警告
你现在看到的警告分为两类,都不影响核心功能:
警告类型 含义 需要处理吗? Warning: /usr/local/sqoop/../hbase does not exist 没有安装 HBase ❌ 不需要,除非你要用 HBase Loading class com.mysql.jdbc.Driver'... 旧的驱动类名写法 ❌ 不需要,只是提示驱动已自动注册
十、完整安装脚本(一键复制)
如果你已经配置好 Hadoop 和 MySQL,可以一次性执行以下命令完成安装:
bash
1#!/bin/bash 2# Sqoop 一键安装脚本 3 4cd ~ 5 6# 下载 Sqoop 7wget https://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 8 9# 解压安装 10sudo tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local/ 11cd /usr/local 12sudo mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop 13sudo chown -R $(whoami):$(whoami) sqoop 14 15# 配置环境变量 16echo 'export SQOOP_HOME=/usr/local/sqoop' >> ~/.bashrc 17echo 'export PATH=$PATH:$SQOOP_HOME/bin' >> ~/.bashrc 18source ~/.bashrc 19 20# 配置 Sqoop 21cd $SQOOP_HOME/conf 22cp sqoop-env-template.sh sqoop-env.sh 23 24# 下载并复制依赖 25cd ~ 26wget https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar 27wget https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar 28wget https://repo1.maven.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar 29wget https://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar 30wget https://repo1.maven.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.jar 31 32sudo cp mysql-connector-j-*.jar /usr/local/sqoop/lib/ 33sudo cp commons-*.jar /usr/local/sqoop/lib/ 34 35# 验证安装 36sqoop version 37 38echo "Sqoop 安装完成!"
十一、测试导入/导出功能
导入 MySQL 数据到 HDFS
bash
1# 1. 在 MySQL 中准备测试数据 2mysql -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');" 3 4# 2. 用 Sqoop 导入到 HDFS 5sqoop import \ 6--connect jdbc:mysql://localhost:3306/test \ 7--username root \ 8--password 你的密码 \ 9--table users \ 10--target-dir /user/mumu/users \ 11--m 1 12 13# 3. 查看导入结果 14hdfs dfs -ls /user/mumu/users 15hdfs 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
1mumu@MuJinqiu:~/bigdata/2026$ mysql 2ERROR 1045 (28000): Access denied for user 'mumu'@'localhost' (using password: NO) 3mumu@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');" 4mysql: [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...):只是提醒你在命令行里直接写密码不够安全,不影响执行。
验证数据是否创建成功
执行以下命令查看刚才创建的表
mysql -u root -p123456 -e "USE test; SELECT * FROM users;"应该能看到:
1+------+-------+ 2| id | name | 3+------+-------+ 4| 1 | Alice | 5| 2 | Bob | 6+------+-------+然后执行 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
1mumu@MuJinqiu:~/bigdata/2026$ hdfs dfs -cat /user/mumu/users/part-m-00000 21,Alice 32,Bob 4mumu@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等