介绍
本案例是将hive中的数据,导入到 MySQL中
本质:由于 Hive数据库中的数据存储在 HDFS 上,本质上,是将 HDFS 中的文件,导入到MySQL中
启动服务
登录 hadoop1,执行下面命令:
cd /program/bin
启动 hadoop
./hadoop.sh start
启动hive
./hive.sh start
Hive准备工作
详见: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)
//hadoop1:3306/weibo--username rootMySQL 登录用户名(root)--password rootMySQL 登录密码(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;
