因为我有这个作业,但是在我找了很多的博客后,我决定还是自己写一个完整的。这里我用到的工具有:navicat、Termius、centos8(桌面版)、kettle-8.2、mysql-8.0、hadoop3.1.3

  • 导入项目素材中所有的.xlsx和.csv文件数据到MySQL数据库

 .xlsx和.csv的导入方法一样,只是在选择文件格式时选择对应的格式即可。

我这里用的navicat直接导入的。首先连接上虚拟机mysql,有时候我的mysql会连接不上出现这个错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/lib/mysql/mysql.sock'

我出现这个错误是没有打开3306的这个端口,解决办法是

//开启防火墙
systemctl start firewalld
//开放指定端口3306和8080
firewall-cmd --zone=public --add-port=3306/tcp --permanent 
firewall-cmd --zone=public --add-port=8080/tcp --permanent
//重启防火墙
firewall-cmd --reload

更改你自己对应的端口开启就行了(反正我是这样)。

1.连接数据库,进入navicat软件,点击左上脚的连接,就会出现下图窗口,编辑数据:连接名(自己定义就行)、主机(需要连接机子的IP地址)、密码(所需连接机子的mysql密码),然后测试连接,成功后就可以保存了。

 2.将表导入进指定数据库。右键点击导入向导

这里呢,就是不同之处了,如果是要导入csv文件,就选择csv,如果是要xlsx呢就选择Excel选项,然后点击继续。 

接着就是一直继续继续,中间的一些选择看自己来,我是按默认的一直继续,然后到最后第八步,点击开始,然后等待一小会儿,就完成了。

3.刷新一下就可以看到表导入成功啦,然后双击一下左边一栏导入到的目标数据库,然后输入查看的命令,就可以看到数据导入成功(这里在result页面能看见数据)。

select * from 目标数据库名字;

  • 使用Kettle把所有.xlsx文件同步到HDFS 

在开始之前,我们得把HDFS启动;

start-dfs.sh
start-yarn.sh

把hadoop里面的core-site.xml、yarn-site.xml和mapred-site.xml这三个文件放入hdp中;这里路径是自己安装的hadoop包下面的,要更换成自己的路径下 

cp /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml./
cp /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml./
cp /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml./

1.创建一个转换,将表输入和hadoop file output拖到spoon主页面,并编辑它们。

2.连接上数据库,这里有两个方法,点击主对象树,然后右键DB数据,点击新建数据库连接向导,然后就开始编辑弹出的页面。

数据库名称是填写目标数据库的名字,然后就继续下一步输入mysql的用户名和密码,点击页面的测试数据库连接,当弹出一个窗口显示:正确连接到数据库[数据库名字]。这时就连接数据库成功。如果出错,有Divers这样的字段,那就是没有添加驱动,此时再向lib文件里放入驱动就可以了。

修改表输入中SQL查询语句,预览看看是否是我们导入的正确数据。

 3.编辑Hadoop file output。进入Hadoop file output里后点击new,新建一个Hadoop Cluster,编辑里面的所有Hostname改为自己机子的名字。在HDFS中,有的不是8020端口(我的就是9000),Username和Password可填可不填(我看一些博客写的可以不填),要填就是填写自己mysql的用户名和密码,然后就点击测试。

 我这里没有开启zookeeper所以zookeeper那儿是❌,但对于现在我弄这些是没有什么大问题,如果想那儿也是绿色的勾,就得打开zookeeper然后又从新开始(退出spoon重新开始从第3步)

4.接着确认出来后在new的那个界面,浏览确认导出的表,然后确实就可以了。(在这里,我们可创建一个空表以便装入我们导入的数据) 然后就是点击运行转换,运行成功。

现在就可以进入我们的HDFS网页查看数据导入是否成功啦。

  • 使用Kettle把所有.csv文件同步到MySQL

1.首先就是连接数据库(如上操作)。

2.创建一个转换,引入csv文件输入和输出并编辑它们;在csv中需要浏览引入我们导入的文件名,看数据更改缓存的大小,弄好后预览数据,看是否为我们导入的数据

3.在编辑表输出时,预览选中想要导入的目标表(表中必须的放一些东西,但是对后面导入数据是没有影响的,因为数据导入成功后会自动执行drop删除命令将前面我们放的数据删除),这里也要根据数据来更改记录数量,然后就是选中指定数据库字段​​​​​​​。

4.接着就是点击最后一排按钮的SQL,出现如下这些SQL语句后点击执行就可以将数据导入进去了。(可以查看一下语句最后一行是否有drop这个命令)

 接着就是运行转换了,数据多时得等一小会会儿,传输完成后就可以进入mysql中查看是否导入到指定表里了,如下图所示(我这里是在navicat查看的),成功。

我这里最后呢,有过错误,因为我给的数据char必须得很长,所以如果也是我这个错误,可以试试改一下表的结构长度。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐