sqoop1.4.7 将Hive数据导入到MySQL(本质是将HDFS文件导入到MySQL) 作者:马育民 • 2025-12-08 10:13 • 阅读:10002 # 介绍 本案例是将hive中的数据,导入到 MySQL中 **本质:**由于 Hive数据库中的数据存储在 HDFS 上,本质上,是将 HDFS 中的文件,导入到MySQL中 # 启动服务 登录 `hadoop1`,执行下面命令: ``` cd /program/bin ``` ### 启动 hadoop ``` ./hadoop.sh start ``` ### 启动hive ``` ./hive.sh start ``` # Hive准备工作 详见:[hive教程:select查询语句-准备数据(dept、emp)](https://www.malaoshi.top/show_1IXlN51DbxF.html "hive教程:select查询语句-准备数据(dept、emp)") # MySQL 准备 ### 建库 创建 scott 数据库 ``` mysql -uroot -proot -e 'create database if not exists scott;' ``` ### 创建表 ``` mysql -uroot -proot -e 'create table scott.dept(deptno int ,dname varchar(255),loc varchar(255) )ENGINE=InnoDB DEFAULT CHARSET=utf8;' ``` # 全部导入 将 hive 表中,HDFS 中的文件导入到MySQL 中 ``` cd /program/sqoop-1.4.7 ``` ``` bin/sqoop export --connect jdbc:mysql://hadoop1:3306/scott --username root --password root --table dept --export-dir '/user/hive/warehouse/dept' --input-fields-terminated-by ',' ``` ### 解释 - `sqoop export`:Sqoop 核心指令,用于将 HDFS/Hive 数据导出到关系型数据库(此处为 MySQL) - `--connect jdbc:mysql://hadoop1:3306/weibo`:MySQL 连接串:指定数据库地址(hadoop1:3306)、目标数据库名(weibo) - `--username root` MySQL 登录用户名(root) - `--password root` MySQL 登录密码(root,明文存在安全风险,后文优化) - `--table weibo`:目标 MySQL 表名(数据导入到 weibo 表) - `--export-dir '/user/hive/warehouse/weibo_uid_wbcnt'`:HDFS 数据源路径(Hive 表 weibo_uid_wbcnt 的默认存储路径) - `--input-fields-terminated-by '\t'`:HDFS 数据文件的字段分隔符(制表符 `\t`,需与 Hive 表存储格式一致) # 查询MySQL数据 登录 `hadoop1` 服务器: 执行下面命令,登录 MySQL: ``` mysql -uroot -p ``` 然后输入密码 ### 查询表 ``` select * from scott.dept; ``` [](https://www.malaoshi.top/upload/0/0/1GW2MtsAIW9G.png) 原文出处:http://www.malaoshi.top/show_1GW2MtugJyyL.html