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

效果预览

o_Geoencoding.png

数据表结构

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值