zoukankan      html  css  js  c++  java
  • 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;
    
  • 相关阅读:
    VS2010导入DLL的总结
    [转]C#事件简单示例
    VS2010中实现TreeView和Panel的动态更新
    【JZOJ1282】打工
    【NOIP2016提高A组五校联考2】tree
    【NOIP2016提高A组五校联考2】running
    【NOIP2016提高A组五校联考2】string
    8月~9月学习总结
    NOIP2016提高A组五校联考2总结
    NOIP2016提高A组五校联考1总结
  • 原文地址:https://www.cnblogs.com/jieyuefeng/p/6618957.html
Copyright © 2011-2022 走看看