Kettle应用实例

Kettle应用实例

需求

数据库中有很多坐标,需要通过百度地图API取到对应地点的信息,并入库。

步骤描述

  1. 从数据库读取经纬度
  2. 调用百度地图API拿到数据
  3. 解析数据
  4. 结果入库

具体实现

1. 从数据库读取经纬度

​ 该步骤使用kettle的表输入实现,SQL如下所示:

select lat, lng, concat(lat,',',lng) as location from locations

​ 注:由于百度地图API需要经纬度在一起的写法,所以构造了location字段

2. 调用百度地图API拿到数据

​ 该步骤使用kettle的HTTP Client实现,配置如下:

URL:http://api.map.baidu.com/geocoder/v2/?output=json&pois=0&ak=xxxxxxxx
结果字段名:result

​ 注:ak参数为百度地图API生成的应用标识,详细文档见http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

​ 增加参数如下:

名称:location
命名参数:location

​ 注:名称为第一步结果集的字段名,命名参数为URL参数的参数名

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;
原文地址:https://www.cnblogs.com/jieyuefeng/p/6618957.html