栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

从零教你如何通过Sqoop把Hadoop HDFS上的数据同步数据到MySQL中(附带数据集,报错提示并修改)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从零教你如何通过Sqoop把Hadoop HDFS上的数据同步数据到MySQL中(附带数据集,报错提示并修改)

1 数据处理:

将三个“考研成绩”Excel表格处理后存入虚拟机

数据在此:

链接:https://pan.baidu.com/s/1DzNirNz5Xdno2G5UVguTVQ 
提取码:0309

 

2.Hadoop:

开启HDFS:start-all.sh

并且查看进程是否全部开启!

3 HBase(可以不用该步骤)

开启HBase:start-hbase.sh

并且查看进程是否全部开启!

 

4. Hive 操作

4.1在HIve创建数据库 create database kaoyan;用以存放我们的考研成绩数据表。

4.2 创建数据表kaoyan01,用以存放我们的考研成绩数据。

#一共四个字段,对应“考研成绩.xlsx”中的数据 学号 科目1 科目2 总分。

#用以存放虚拟机中“001”的数据
create table kaoyan01(
id String,
cj1 String,
cj2 String,
sum String)
row format delimited fields terminated by't'stored as textfile
location'/hive/kaoyan01_001';

#用以存放虚拟机中“002”的数据
create table kaoyan01(
id String,
cj1 String,
cj2 String,
sum String)
row format delimited fields terminated by't'stored as textfile
location'/hive/kaoyan01_002';

#用以存放虚拟机中“003”的数据
create table kaoyan03(
id String,
cj1 String,
cj2 String,
sum String)
row format delimited fields terminated by't'stored as textfile
location'/hive/kaoyan01_003';

虚拟机的hive查看建好的表:

 HDFS查看数据是否写入:

5.HDFS操作
通过 HDFS 将 ’001’  ‘002’  ‘003’ 中的数据传到上面建的表单中:

hdfs dfs -put 001 /hive/kaoyan01_001

hdfs dfs -put 002 /hive/kaoyan01_002

hdfs dfs -put 003 /hive/kaoyan01_003

 在Hive中查看是否有数据插入:

 

在 Hive 中 创建中间表:用来将三个数据表整合到一起

create table kaoyan AS select * from kaoyan01;

#由于”kaoyan”要在后面用做结果表,为避免名字上的混乱将其改明为“kaoyan00”

ALTER TABLE kaoyan RENAME kaoyan00;

insert into kaoyan select * from kaoyan02;

insert into kaoyan select * from kaoyan03;

查询”kaoyan00” 查看是否三个数据都在:

 

#创建结果表”KaoYan”,将中间表排序过后存到结果表,用来传到MySQL
#建表
create table KaoYan(
id String,
cj1 String,
cj2 String,
sum String)
row format delimited fields terminated by't'stored as textfile
location'/hive/KaoKan_003';

#排序
insert into KaoYan select id,cj1,cj2,sum from kaoyan00 order by sum desc;

 

6.Mysql操作

6.1在mysql中创建数据库”kaoyan”  创建数据库“kaoyan_data” 用来接收Hive 的数据

7.1 Sqoop 操作

sqoop export 
--connect 'jdbc:mysql://hadoop2:3306/kaoyan' #想要传入到的mysql中的数据库名
--username hive 
--password 123456 
--table KaoYan #想要传入到的mysql中的数据表名
--input-fields-terminated-by 't' #以 tab 为分割数据 不然数据导入后格式会和预期不一样
--export-dir /hive/KaoKan_003 #将”/hive/KaoKan_003”的数据导入到mysql->kaoyan->kaoyan_data
-m1

错误展示1:#以 tab 为分割数据 不然数据导入后格式会和预期不一样

#建表前没有use 数据库 或者建表时没有指定数据库。那么这个表会默认建在”default”下。

#因此在“kaoyan”中查无此表!

原因:没有以 tab "t"为分割数据,上传时没有进行分割上传。

更换查询语法,查询如下 表中 cj1 cj2 sum 均无数据,四列数据都挤在了 id中。

 查看数据:#sqoop操作将 ”/hive/KaoKan_003”的数据导入到mysql->kaoyan->kaoyan_data

 

代码执行状况:正在执行!

 代码执行状况:执行完成!

 到MySQL的kaoyan.kaoyan_data 中查看数据:

 数据正常!试验完成!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/974682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号