大数据:通过Kettle把传统数据库数据导入到Hive中

时间:2024-03-31 16:18:50

自从使用了Kettle工具之后,越来越发现她的强大,上篇文章主要介绍通过Kettle工具在传统数据库之间迁移数据,但很多业务场景是需要放到大数据上去的,如何通过Kettle工具把传统数据库中数据导入到Hive中,这是本文要详细讲解的。

一、准备

系统 版本
本地操作系统 Windows 10 pro
ETL工具 Kettle 7.0.0
数据库 SQL Server 2008 R2
Hive Hive 2.3.4
  1. 配置Kettle
    1.1 ${KETTLE_HOME}\data-integration\plugins\pentaho-big-data-plugin目录下的plugin.properties文件,Kettle支持的hadoop版本可以在同目录hadoop-configurations下查看到,主要有cdh、emr、hdp、mapr,由于之前搭建的hadoop是apache hadoop 2版本所有配置为hdp25。
    大数据:通过Kettle把传统数据库数据导入到Hive中
  2. 配置Hadoop权限
    Hadoop使用代理机制, 在hadoop的core-site.xml中添加如下代码,意思是允许任意主机(第一个*)的任意组((第二个*))的用户使用root这个帐号来访问集群。
    大数据:通过Kettle把传统数据库数据导入到Hive中
  3. 启动hiveserver2服务
    hiveserver2是hive提供给外部访问的接口,可以使客户端执行Hive查询的服务,本地可以先验证一下:
    3.1 先启动一个hiveserver2服务,可以通过hiveserver2或者hive --service hiveserver2命令启动。(如果启动失败,检查下系统之前是不是有在运行的hiveserver2进程)
    3.2 复制一个回话,进入${HIVE_HOME}下执行./bin/beeline -u jdbc:hive2://193.168.9.79:10000 命令(如果系统安装过spark的话,一定要到HIVE_HOME目录下执行./bin/beeline,因为SPARK_HOME的bin目录下也有个beeline程序),启动之后会遇到Pemission denied的问题,主要是在分布式文件目录/tmp没有权限访问,可以通过增加权限解决。bin/hdfs dfs -chmod -R 777 /tmp/
    大数据:通过Kettle把传统数据库数据导入到Hive中
    解决完这个问题之后,beeline可以正常启动,同时控制台没有错误,另外可以通过http://hiveip:10002访问:
    大数据:通过Kettle把传统数据库数据导入到Hive中
    大数据:通过Kettle把传统数据库数据导入到Hive中
  4. 拷贝文件到Kettle目录${KETTLE_HOME}\data-integration\plugins\pentaho-big-data-plugin
    4.1 KaTeX parse error: Expected 'EOF', got '\etc' at position 14: {HADOOP_HOME}\̲e̲t̲c̲\hadoop目录下的:cor…{KETTLE_HOME}\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp25
    4.2 KaTeX parse error: Expected 'EOF', got '\jdbc' at position 16: {HIVE_HOME}目录下:\̲j̲d̲b̲c̲\hive-jdbc-x.x.…{KETTLE_HOME}\data-integration/lib/;
    hive-site.xml放置到${KETTLE_HOME}\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp25
    KaTeX parse error: Expected 'EOF', got '\lib' at position 12: {HIVE_HOME}\̲l̲i̲b̲目录下以hive开头的jar文…{KETTLE_HOME}\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp25\lib目录下。
    文件拷贝完成之后,重启Kettle。
  5. Kettle配置Hadoop Hive 2数据库
    大数据:通过Kettle把传统数据库数据导入到Hive中

问题
1.通过Kettle无法创建数据表,在hiveserver2方式也不行,提示/user/hive/warehouse权限不够。
解决办法:hdfs dfs -chmod -R 777 /user/hive修改目录的权限
大数据:通过Kettle把传统数据库数据导入到Hive中
2.创建带中文字符的表或字段的时候提示莫名奇妙的错误。
解决方案:在中文字段前加 ` 字符。
大数据:通过Kettle把传统数据库数据导入到Hive中
大数据:通过Kettle把传统数据库数据导入到Hive中
补充:mysql中文字符写入不进去的问题及解决方案

参考文献
1.Pentaho Kettle 连接 Hive2 进行 ETL 的总结
2.Kettle连接HiveServer2配置和常见问题解决