您的位置 首页 java

开源ETL工具Kettle(PDI)开发(二)java项目集成之小试牛刀

一、背景

ETL 工具很多年前都听过,一直没有深入研究,虽然项目很多地方用到数据交换,为了赶工都是团队简单实现;最近再做一款类似 BI 的产品,之前那种简单实现肯定满足不了需求了,此时才深入了解ETL,看到开源 Kettle 工具,下载并体验一番,感觉很棒,同时也参考了竞品,感觉这个工具体积比较大、部署也很复杂,是个客户端模式,结合产品需要才有了想在此基础进行二次开发的想法,主要利用其核心引擎提供的API功能,自己产品独立完成前端(web)页面,实现ETL功能;不知道有没有和我想法一致的小伙伴一块进行探究!

经过两天的熟悉,进行小试牛刀,完成了一个简单的集成

二、开发环境

SpringBoot+myBatis+ kettle 7.0.0.2-52

三、具体实现

实现目标:通过Kettle客户端生成一个转化,主要实现将 csv 文件数据转化为sql语句

1、第一步:生成转化文件

开源ETL工具Kettle(PDI)开发(二)java项目集成之小试牛刀

创建转化test

xml格式文件test.ktr

2.第二部:在 java 项目中执行该转化

创建IDEA中springBoot项目,在 pom 文件依赖

  <properties>
        <java.version>1.8</java.version>
        <kettle.version>7.0.0.2-52</kettle.version>
    </properties>  
 <!--kettle dependency start-->
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-core</artifactId>
            <version>${kettle.version}</version>
        </dependency>
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-dbdialog</artifactId>
            <version>${kettle.version}</version>
        </dependency>
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-engine</artifactId>
            <version>${kettle.version}</version>
        </dependency>
        <dependency>
            <groupId>pentaho</groupId>
            <artifactId> meta store</artifactId>
            <version>${kettle.version}</version>
        </dependency>
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-ui-swt</artifactId>
            <version>${kettle.version}</version>
        </dependency>
        <dependency>
            <groupId>pentaho</groupId>
            <artifactId>pentaho-vfs-browser</artifactId>
            <version>${kettle.version}</version>
        </dependency>
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-sap-plugin</artifactId>
            <version>${kettle.version}</version>
        </dependency>
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-json-plugin</artifactId>
            <version>${kettle.version}</version>
        </dependency>
        <!--<dependency>-->
        <!--<groupId>pentaho</groupId>-->
        <!--<artifactId>pentaho-big-data-plugin</artifactId>-->
        <!--<version>7.1.0.0-12</version>-->
        <!--</dependency>-->


        <dependency>
            <groupId>pentaho</groupId>
            <artifactId>pentaho-big-data-kettle-plugins-hdfs</artifactId>
            <version>${kettle.version}</version>
        </dependency>

        <dependency>
            <groupId>pentaho</groupId>
            <artifactId>pentaho-big-data-impl-cluster</artifactId>
            <version>${kettle.version}</version>
        </dependency>
        <!--kettle dependency end-->  

注意repositories设置,否则无法正确依赖

  <repositories>
        <repository>
            <id>pentaho-releases</id>
            <name>Kettle</name>
            <url>
        </repository>
        <!-- 阿里云maven仓库 -->
        <repository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>  

在java项目代码中执行转化

 @ Rest Controller
@RequestMapping("trans")
public class TransGraphController {
    @ResponseBody
    @RequestMapping(method= RequestMethod.POST, value="run")
    public String run() throws KettleException {
        // 初始化
        KettleEnvironment.init();
        // 加载文件
        TransMeta transMeta = new TransMeta("D:/temp/test.ktr");
        Trans trans = new Trans(transMeta);
        trans.prepareExecution(null);
        trans.startThreads();
        // 等待执行完毕
        trans.waitUntilFinished();
        return "ok";

    }
}  

四、实现效果

在postman里调用接口进行测试

开源ETL工具Kettle(PDI)开发(二)java项目集成之小试牛刀

虽然很简单,也算是开启了二开,离真正的需求还很远,有兴趣的小伙伴们一起加入吧!

文章来源:智云一二三科技

文章标题:开源ETL工具Kettle(PDI)开发(二)java项目集成之小试牛刀

文章地址:https://www.zhihuclub.com/171026.shtml

关于作者: 智云科技

热门文章

网站地图