一直想利用kettle工具实现直接连接hive和mysql操作数据,在踩过很多坑后终于实现,故记录分享。
软件环境:
Hadoop-2.7.1(单机)、apache-hive-2.3.5-bin、MySQL-5.6.1、pdi-ce-7.1.0.0-12(kettle)

一、首先需要配置hiveserver2并开启hive2客户端,kettle才能连接到hive。

①、配置hive-site.xml文件,在hive-site.xml中添加一下内容


hive.cli.print.header true hive.server2.thrift.port 10000 hive.server2.thrift.bind.host 192.168.133.135

②、启动Hadoop,通过jps查看进程

kettle连接hive连不上 kettle hive连接参数_kettle连接hive连不上


③、开启hiveserver2,输入命令hiveserver2 或者 hive --service hiveserver2(开启hive的命令是:hive)

hiveserver2 或者 hive --service hiveserver2

如果出现以下xshell内容,别慌张,正常现象,因为启动了一个服务

kettle连接hive连不上 kettle hive连接参数_kettle_02


jps查看进程,发现多了RunJar,即为hiveserver2服务

kettle连接hive连不上 kettle hive连接参数_kettle_03


④、重开一个xshell窗口,输入:beeline(Hive新的命令行客户端工具, 替代HiveCLI

),记得手写输入beeline,拷贝进去可能出现-bash: Beeline: command not found的情况。beeline

kettle连接hive连不上 kettle hive连接参数_kettle连接hive连不上_04


⑤、连接10000端口,输入用户和密码进入hive客户端!connect jdbc:hive2://192.168.133.135:10000

kettle连接hive连不上 kettle hive连接参数_kettle_05


⑥、测试使用show databases 和 其他命令查看数据库内容

kettle连接hive连不上 kettle hive连接参数_kettle_06


⑦、浏览器输入:http://192.168.133.135:10002/ 查看hive使用情况

kettle连接hive连不上 kettle hive连接参数_kettle连接hive连不上_07


二、kettle连接hive和mysql

①、新建一个转换,表输入端选择连接hive,设置处填写参数

kettle连接hive连不上 kettle hive连接参数_hive_08


②、完毕后点击测试,如果各项参数都正确,那么连接成功,

kettle连接hive连不上 kettle hive连接参数_hive_09


③、编写SQL,点击预览,成功展示hive数据库中的数据

kettle连接hive连不上 kettle hive连接参数_kettle连接hive连不上_10


注、需要将hive的驱动包拷贝到C:\kettle\data-integration\lib下,否则报以下错误,mysql驱动包也是。

kettle连接hive连不上 kettle hive连接参数_mysql_11


三、hive数据插入mysql

①、在mysql数据库中间一张表,字段类型自由指定

CREATE TABLE `coordinate` (
  `code` varchar(50) DEFAULT NULL COMMENT '编码',
  `name` varchar(50) DEFAULT NULL COMMENT '城市名称',
  `longitude` double DEFAULT NULL COMMENT '经度',
  `latitude` double DEFAULT NULL COMMENT '维度'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

②、kettle的插入更新端连接mysql数据库,选择目标表,并指定字段的映射关系(流里的字段代表hive库字段,更新的字段代表mysql库字段)

kettle连接hive连不上 kettle hive连接参数_字段_12


③、点击窗口运行和启动按钮

kettle连接hive连不上 kettle hive连接参数_kettle连接hive连不上_13


④、运行成功

kettle连接hive连不上 kettle hive连接参数_mysql_14


⑤、查看mysql数据并与hive数据做对比,一致。

kettle连接hive连不上 kettle hive连接参数_mysql_15

kettle连接hive连不上 kettle hive连接参数_mysql_16


至此,步骤完成。