kettle下载及配置
kettle安装
kettle安装包:百度网盘
提取码:2333
环境配置
要运行软件的可视化界面,需要下载jdk并配置环境变量
(jdk下载请自行百度)
在系统环境变量的CLASSPATH中加入 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
在系统环境变量中新建JAVAHOME,配置如下:
在系统环境变量的path中加入
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
环境配置好后即可解压kettle安装包,直接运行spoon.bat文件即可进入软件可视化界面。
应用尝试
此次尝试实现的应用为“通过百度地图API获取对应地点信息并入库”
教程链接为https://www.cnblogs.com/jieyuefeng/p/6618957.html
数据库连接
新建数据库步骤参考大佬的图片:
但我此次使用的是mysql数据库,配置图片如下:
我设置好后点击测试发现报错如下:
经查找发现是没有相应的连接驱动所致,下载相应驱动的jar包并放入kettle的lib文件夹即可:
mysql的jar包下载地址:https://dev.mysql.com/downloads/connector/j/
点击右侧:
解压后复制“mysql-connector-java-5.1.49-bin.jar”至kettle的lib文件夹中即可。
注意新增驱动后需重启kettle才能生效
应用配置
核心对象建立
本次应用主要用到表输入,HTTP Client,JSON INPUT和表输出
而后对每个步骤进行配置
1.从数据库读取经纬度
该步骤使用kettle的表输入实现,SQL如下所示:`
select lat, lng, concat(lat,',',lng) as location from locations
注:由于百度地图API需要经纬度在一起的写法,所以构造了location字段
此处由于原博客中没有给出所用的locations表,所以手动添加一条数据
2.调用百度地图api拿到数据
该步骤使用kettle的HTTP Client实现,配置如下:
URL:http://api.map.baidu.com/reverse_geocoding/v3/?ak=xxxxxxxx&output=json&coordtype=wgs84ll&location=31.225696,121.49884
结果字段名:result
(由于原博客时间较早,百度地图api发生改变,此处已更改为最新的URL)
注:ak参数为百度地图API生成的应用标识,详细文档见http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
增加参数如下:
名称:location
命名参数:location
3.解析数据
由于第二步拿到的数据格式为JSON,所以该步骤采用kettle的JSON INPUT实现,其中相关设置如下:
源定义在一个字段里:打钩
从字段获取源:result
并添加如下字段信息:
名称 路径 类型
formatted_address result.formatted_address String
business result.business String
district result.addressComponent.district String
street result.addressComponent.street String
street_number result.addressComponent.street_number String
distance result.addressComponent.distance String
4.结果入库
该步骤使用kettle的表输出完成,配置如下:
目标表:locations_result
数据库字段为:
表字段 流字段
lat lat
lng lng
address formatted_address
business business
district district
street street
street_number street_number
distance distance
数据表结构
CREATE TABLE `locations` (
`lat` float DEFAULT NULL,
`lng` float DEFAULT NULL,
`text` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `locations_result` (
`lat` float NOT NULL,
`lng` float DEFAULT NULL,
`address` varchar(100) DEFAULT NULL,
`business` varchar(100) DEFAULT NULL,
`district` varchar(10) DEFAULT NULL,
`street` varchar(50) DEFAULT NULL,
`street_number` varchar(50) DEFAULT NULL,
`distance` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
调用百度地图API时的AK获取
在百度地图开放平台按照流程进行申请
百度地图开放平台
执行结果