接上一篇win7传输数据至hdfs
hive是基于hadoop的数据仓库,具体hive相关的内容可以查看这篇文档,使用kettle将关系型数据库导入hive或者从hive导出数据的方式有以下几种:
1、使用kettle的sqoop组件
玩过hive的人都知道,在hadoop生态圈,sqoop的作用就是将关系型数据库的数据导入到hdfs(或者将hdfs的数据导入到关系型数据库),之后使用hive命令将数据加载到hive表即可,kettle集成了sqoop插件,如下:
Kettle的sqoop插件的工作流程大概如下图(以import为例):
这里面存在两个个问题:
-
Sqoop在导入数据的时候会使用Mapreduce,引文kettle运行在windows机器上,hadoop集群在linux机器,所以需要在mapred-site.xml中加入如下参数:
-
因为涉及到java文件的编译,就是需要集群中hadoop使用的java版本要和kettle的一致,本人在使用过程中因为hadoop集群的java版本是1.7,kettle是1.8,所以总是失败,由于不能随意更改java版本,所以这种方式不适合,并且因为这种方式其实不是最优,因此放弃使用。
2、使用jdbc将数据导入hive
Hive是hadoo