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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM