Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

时间:2024-03-31 16:17:14

最近在学习大数据的数据迁移,要从关系型数据库里导数据到hive数据库里,其中碰到了很多麻烦,曾试过使用sqoop方式导入数据不过功能不够全面比如表结构及数据筛选问题,现在使用kettle来进行数据迁移工作,其中碰到了很多问题不过都能给出相应的解决方案,如此写下这篇文档供各位工程师参考

 

那么如何将mysql数据导入到hive里呢,kettle里有自带方法,可以通过表输入和表输出来实现,不过自带的方法载入数据极其缓慢,不推荐使用这种方法

 

以下着重讲解我使用的方法

 

1,将mysql数据导入到hdfs

 

我使用的是kettle7.0hadoop2.6hive1.2

 

先在kettle建立转换,添加表输入

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

配置相关查询条件与数据连接

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

 

在这儿hive里因为没有相关表,因此再建立个表输出

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

将表输入连接上表输出

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

这儿很重要,需要先配置好hive的相关连接

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

其中目标表可以在这儿定义,也可以在外定义变量,如果hive里有相应的表可以直接跳过这一步

点击下面的sql,开始创建从mysql输出的对应表



 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

红框中的一段是原本没有的,可以自己添加相应hive表分隔符号,完成后点击执行即可

然后Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考取消掉表输入连接的线,防止转换运行时运行到表输出这儿

然后添加一个Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

这儿的配置非常重要,关系到导入hive表中的数据

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

连接上hdfs目录后,这儿可以选择缓存目录,在目录后可添加名字作为新文件来保存

Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

内容这儿可以选择相应分隔符来对数据分隔操作,头部一定要去掉,不然导入hdfs时会将表头的字段名一起导入,还有编码最好是换成utf-8保证中文的使用

 

Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

字段这儿要先获取字段,然后先关字段要选择对应格式,比如我这儿id0000054,就要选为#格式,不然会使最后hive导入的id这儿为null,日期也是

 

 

到这儿为止就可以运行下转换了

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

转换完成的文件会放在hdfs系统里,可以使用eclipsedfs功能查看hadoop下的hdfs文件

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

 

 

 

2,将hdfs文件导入到hive数据库里

 

 

这一步很重要,目前我使用的方法是直接load文件进去

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

 

这个是kettle的工作,转换里的是上面的步骤,新添加个hadoop copy  files

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考

左边为原始目录也就是存放hdfs文件的地址,后面是hive数据库文件目录的地址,如果需要直接替换hive里面的内容在设置里勾选替换就可以了

 Kettle spoon中mysql数据导入hive从建表到导数据解决方案参考