利用Kettle转储接口数据API
利用Kettle转储接口数据
1. 项目背景
1.1. 项目背景
数据接口
API:应用程序接口(Application Program Interface)的简称,是实现计算机软件之间数据通信的工具。同时API也是一种中间件,为各个平台提供数据共享。在大数据与物联网发展的背景下,目前有大量的数据接口被提供或发掘出来,提供给开发者使用,应用到生活中的每一个细节中。本文旨在阐述kettle对于数据接口的监控、调用及其转储,更多详细的数据接口内容不在此具体说明。
项目背景
本文旨在提供一种方法,以帮助同学们掌握Kettle对于数据接口的调用与转储,Kettle的配置方法和组件的使用具有多样性,需要大家多多思考与发掘。
2. Kettle配置
本文使用的是Kettle 7.0版本,调用的接口为百度开发平台-百度地图API,返回数据集为JSON格式或者XML格式,本次使用了两种方式来存储数据,一种是导出成EXCEL,一种是导出到关系数据库进行存储。
2.1. Kettle转换的配置
总览
总览
校验接口信息
我们首先拿到WebAPI的地址,测试连接的畅通,这里我使用了百度地图的Place Suggestion API,输入城市需要检索的地点,返回建议值,效果如下:
这里我们测试接口URL的连通性。
这里我的接口是没有校验身份的,只需要输入申请的AK就可以了。测试成功,返回的值为JSON字符串的格式。
接口信息接入
新建一个转换,接口信息接入可以选择EXCEL接入,文本接入,生成记录,或者表输入都行,视自己的情况而定,我这里因为只是测试,选用了生成记录,并且参数值固定死,后期可以使用“${}”将参数替换出来。
利用HTTP客户端解析数据
添加HttpClient组件,我们需要用到它作为客户端来解析API,类似浏览器。
这里的URL地址我们选择从前面的生成记录里面获取。注意字符集的设置,否则后面获取到的接口数据会是乱码。
字符集设定为utf-8
判断是否获取到数据
这里添加过滤记录组件,用来判断是否成功从HTTP客户端获取到数据
解析JSON串
添加JSON输入组件,这里从流中获取到从API上获取的结果作为源字段。
将JSON串解析成多个字段的形式,具体路径需要自己先在过一下JSON串的格式,提前掌握这些信息。
这里是$.
嵌套循环解析JSON串
我们此次使用的JSON串,实际需要的数据实际是在其内曾的RESULT字段里面嵌套的JSON串里,所以我们需要再对RESULT字段进行解析。
这里是$..
输出数据
我们这里使用了EXCEL输出的方法,EXCEL输出没有特别需要强调的地方,主要需要注意的就是在这里我们只输出需要的内部的地址信息,因为其他字段在流中也会继承下来,这里合理选择输出的字段即可。
错误处理
错误处理一般来说都只是进行记录,或者写入日志,或者写入日志表,或者发送报错信息邮件到管理员邮箱。
这里不做具体讲解,具体的选择方案看项目需求而定。
运行结果
F9可执行改转换,转换没有错误的话则进入上面一条线,并且输出为EXCEL表格。
EXCEL展开如下图:
3. 其他
本附件列出了一些配置过程中可能与遇到的一些问题以及解决方案。
3.1. 常见错误信息
在实验过程中遇到一些错误在所难免,我这里提供了一些容易遇到的错误,给大家参考参考思路。
中文乱码
解决方案:在使用HTTP客户端接入的时候,需要正确选择字符集,一般使用UTF-8是没错的,它能够兼容大部分字符。在进行文本文件输出的时候,需要正确选择输出的格式,尽量不在这一步做编码转换。
API接口无效
解决方案:在解析API接口URL路径时,难免参数会带上中文汉字,这里的汉字需要提前做好转码,这里教大家一个小技巧,使用Chome浏览器,把URL链接粘贴进去,浏览器会自动帮我们把编码进行转换。此时,再把URL地址粘贴出来即可。