美文网首页
kettle调用API

kettle调用API

作者: 一介书生独醉江湖 | 来源:发表于2022-06-06 14:25 被阅读0次
简介
# Kettle最早是一个开源的ETL工具,以Java开发,支持跨平台运行,其特性包括:支持100%无编码、拖拽方式开发ETL数据管道;可对接包括传统数据库、文件、大数据平台、接口、流数据等数据源;支持ETL数据管道加入机器学习算法。
# 简单来说就是抽取、转换、装入和加载数据的工具;
一、创建生成记录
转换--> 新建一个转换;
输入--> 生成记录(双击);
# 限制是运行几次接口,这里是1次;
# 字段中配置url、method、content-type、body;
# 配置好确定即可;
image.png
二、创建REST client
查询-->REST client(双击);
# URL field name 是api访问地址;
# Method field name 是访问类型 GET/POST;
# body field 传入的body参数;
# Application type,选择JSON;
# Result field name ,api返回的结果,后面要用;
# 以上配置根据实际情况进行配置即可;
image.png
三、创建JSON input
输入--> JSON input
# 这里选择数据源,这里选择的是上面api接口返回的结果(即api_result);
image.png
# 这里解析api返回的JSON字段;
image.png
# 具体语法参考下面:
{
  "code": 0,
  "message": "请求成功",
  "recvTime": 1654493124016,
  "respTime": 1654493124017,
  "extendData": {
    "list": [
      {
        "count": 10000,
        "scn": 3000000
      },
      {
        "count": 10001,
        "scn": 3000001
      }
    ]
  }
}
# 取上面的count的几种写法:
$.extendData.list[*].count 或 $..count 或 $.extendData..count
image.png
四、创建表输出
输出-->表输出
image.png
# 新建一个数据库连接,并配置数据库连接和字段映射;
image.png image.png
点击测试
image.png
# 数据库驱动没有配置,所以提示上面这个错误
# 需要将oracle驱动拷贝到kettle安装目录的lib下
# 首先需要有一个ojdbc的jar包,我用的是ojdbc14.jar
# 百度云盘链接: https://pan.baidu.com/s/1Haf2gzvHzWW40drJlKSmLQ  密码: js29
cd /Users/ds/Documents/data-integration/lib
cp /Users/ds/Desktop/ojdbc14.jar /Users/ds/Documents/data-integration/lib
# 保存并关闭当前spoon,重新启动spoon;
# 再次编辑数据库连接,点击测试,成功连接数据库;
image.png
五、JAVA接口测试代码
@Api(value = "测试接口", tags = "V3-第三方API接口")
@ApiSort(20)
@RestController
@RequestMapping("/api/v3/")
public class ApiV3out5000Ctrl {
/**
     * 测试kettle
     * @return
     */
    @ApiOperation(value = "测试kettle", notes = "测试kettle", produces = "application/json")
    @PostMapping(value = "test", produces = {"application/json;charset=UTF-8"})
    public RestResponse test() {
        try {
            Integer count = 10000;
            Integer scn = 3000000;

            OutResponseVo outResponseVo = new OutResponseVo();
            for(int i = 0; i < 2; i++){
                BaseData baseData = new BaseData();
                baseData.setCount(count + i);
                baseData.setScn(scn + i);
                outResponseVo.getList().add(baseData);
                System.out.println("i : " + i);
            }
            return RestResponse.succuess(System.currentTimeMillis(),outResponseVo);
        } catch (Exception e) {
            e.printStackTrace();
            return RestResponse.fail(System.currentTimeMillis(),"测试kettle异常");
        }
    }
}

@Data
@ApiModel(value = "outResponseVo", description = "测试返回 请求对象")
public class OutResponseVo {

    List<BaseData> list = new ArrayList<>();

}
@Data
@ApiModel(value = "baseData", description = "测试返回 请求对象")
public class BaseData {

    private Integer count;

    private Integer scn;

}
# 1)启动JAVA项目,保证接口可正常访问;
# 2)kettle 运行 run (F9)
image.png
2022/06/06 14:04:35 - Spoon - Using legacy execution engine
2022/06/06 14:04:35 - Spoon - 转换已经打开.
2022/06/06 14:04:35 - Spoon - 正在打开转换 [测试接口]...
2022/06/06 14:04:35 - Spoon - 开始执行转换.
2022/06/06 14:04:35 - 测试接口 - Validating active environment 'Default'
2022/06/06 14:04:35 - 测试接口 - 为了转换解除补丁开始  [测试接口]
2022/06/06 14:04:35 - 表输出.0 - Connected to database [orcl] (commit=1000)
2022/06/06 14:04:35 - 生成记录.0 - 完成处理 (I=0, O=0, R=0, W=1, U=0, E=0)
2022/06/06 14:04:35 - REST client.0 - 完成处理 (I=0, O=0, R=1, W=1, U=0, E=0)
2022/06/06 14:04:35 - api解析.0 - 完成处理 (I=2, O=0, R=1, W=2, U=0, E=0)
2022/06/06 14:04:35 - 表输出.0 - 完成处理 (I=0, O=2, R=2, W=2, U=0, E=0)
2022/06/06 14:04:35 - 测试接口 - Transformation duration : 0.397 seconds [  0.397" ]
2022/06/06 14:04:35 - Spoon - 转换完成!!
# 查看数据库,数据已经插进数据库;
image.png
参考:
https://blog.csdn.net/qq844385029/article/details/119533650
https://www.modb.pro/db/170416
https://wenku.baidu.com/view/e17a46411dd9ad51f01dc281e53a580216fc5022.html
https://www.jianshu.com/p/9ef1a7c5bb14
https://blog.51cto.com/51power/5256649

相关文章

网友评论

      本文标题:kettle调用API

      本文链接:https://www.haomeiwen.com/subject/snzdmrtx.html