Kettle系列(二)smart-kettle本地离线部署

news2024/12/23 1:36:44

Kettle系列(二)smart-kettle本地离线部署

  • 说明
  • 一、概述
  • 二、代码下载
    • (1)后端代码依赖下载
    • (2)前端代码依赖下载
  • 三、创建数据库(mysql8)
  • 四、修改配置文件
  • 五、mysql8数据库配置
  • 六、其他配置
  • 七、启动
  • 八、总结

说明

更新时间:2023/08/14 00:22
本文记录了win10下的smart-kettle的下载和配置,并基于mysql8的数据库进行了本地部署

本文仅为记录学习轨迹,如有侵权,联系删除

一、概述

kettle
先说明一下什么是kettle,相信做过数据清洗的观众应该对这个工具不陌生,它是用于数据清洗的很常见的开源的工具,官方的解释如下

Kettle 是一款国外开源的 ETL 工具,纯 Java 编写,绿色无需安装,数据抽取高效稳定 (数据迁移工具)。Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。

通俗点讲就是一个平时用于数据治理方面的工具,例如数据同步、数据迁移、数据清洗等

smart-kettle
那么smart-kettle又是啥呢?首先先了解一下kettle存在的问题,kettle是一个java开发的客户端,正常的使用都是安装在win系统上面,进行任务的配置等,可移植性差,而且客户端非常耗内存、CPU,只适合配置,不适合做业务,这个好理解,正常系统应该部署在linux服务器上面让它24小时运行,而不是直接运行在自己的win系统的电脑上面,很难投入生产环境,再者kettle的任务调度,日志没有统一管理,因此,为了解决这些问题,smart-kettle孕育而生。

可以看一下gitee上面对smart-kettle的介绍

smart kettle是针对上述企业的痛点,对kettle的使用做了一些包装、优化,使其在web端也能 具备基础的kettle作业、转换的配置、调度、监控,能在很大一定程度上协助企业完成不同业务场景下数据的ETL(抽取、转换、加工)的能力。

通俗点来讲就是轻量级的kettle web的监控调度平台,可以直接部署在linux服务器上面通过web进行访问,提供调度、定时任务、日志监控等功能

备注:smart-kettle地址

二、代码下载

smart-kettle是国内大佬开源的一个工具,地址:https://gitee.com/yaukie/smartkettle,截图如下
在这里插入图片描述
搞it的对这种代码仓库应该不陌生了,就不过多介绍了,直接下载源码,目录截图如下
在这里插入图片描述
代码分为前端和后端,官网上面有详细的部署教程,可结合着来看
在这里插入图片描述

(1)后端代码依赖下载

先用idea打开代码,截图如下
在这里插入图片描述
按照官网的教程先配置maven的settings.xml文件
在这里插入图片描述
确保idea使用的是自己刚配置好的maven
在这里插入图片描述
然后直接maven安装命令 mvn clean -U install,强制下载jar包
在这里插入图片描述
在这里插入图片描述

等待安装即可,注意过程可能会有点慢,如果卡住可以重启idea,重新刷新maven,按照官网的解释,下载完本地仓库需要有以下jar包

   x1-simple-job-1.0.0-SNAPSHOT.jar
   x-kettle-core-1.0.0-SNAPSHOT.jar
   x-common-base-1.0.0-SNAPSHOT.jar
   x-common-pro-1.0.0-SNAPSHOT.jar
   x-common-auth-1.0.0-SNAPSHOT.jar

查看一下自己本地仓库是不是已经下载好了jar
在这里插入图片描述
检查发现“x-common-pro-1.0.0-SNAPSHOT.jar”这个好像没下成功,不过经过本人测试发现代码正常正常运行,且没有发现问题,如果大家也有这个问题可以先忽略,如果发现maven死活下不来,那么就只能采用官网的另一种安装方式了
在这里插入图片描述
至此maven按照完成

(2)前端代码依赖下载

前端的代码依赖下载就简单多了,直接cmd进入前端代码所在目录,先给大家看看本人的node版本
在这里插入图片描述
然后执行npm install等待安装即可,没报错的话即安装成功

三、创建数据库(mysql8)

数据库的配置可以用mysql5,也可以用mysql8(有坑需要注意),本人用的mysql8,下面开始创建数据库,一共有两个,

  • 一个是系统数据库xtl(用于记录用户登录,日志监控等)
  • 一个是数据库资源库etl(kettle专属的资源库)

创建好数据库后,都是先执行create.sql,然后执行init.sql
在这里插入图片描述
这里有个坑需要注意,需要如果你是用的mysql5版本的,脚本都是可以正常执行,但是如果是mysql8的,就会发现执行create.sql的时候会报错
在这里插入图片描述
这是由于作者导出的时候用的是mysql5,里面有些语法mysql8不适用,就是里面给字段加注释的代码,例如


comment on table x_menu is '菜单权限表'
;

comment on column x_menu.menu_id is '菜单ID'
;

comment on column x_menu.menu_name is '菜单名称'
;

comment on column x_menu.parent_id is '父菜单ID'
;

comment on column x_menu.order_num is '显示顺序'
;

comment on column x_menu.path is '路由地址'

这些直接注释掉即可,注意,一定要确保所有的sql文件都执行成功才能往下走。

四、修改配置文件

修改的地方下面用截图展示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其他的不用动,这样就好了

五、mysql8数据库配置

如果各位用的是mysql5的话,这个章节可以不用管,直接到下一个章节即可!!!
如果各位用的是mysql5的话,这个章节可以不用管,直接到下一个章节即可!!!
如果各位用的是mysql5的话,这个章节可以不用管,直接到下一个章节即可!!!

本人数据库一直用的mysql8,但是这套代码只兼容了mysql5,所以需要自己自行改造,使它兼容mysql8,首先是数据库驱动要改为mysql8的驱动
在这里插入图片描述
如果lombok导不进来,可以自行配置一下lombok
在这里插入图片描述
以上就是mysql8需要改动的地方,下面给出完整的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>smart-kettle-parent</artifactId>
        <groupId>org.yaukie.frame</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <groupId>org.yaukie.frame</groupId>
    <artifactId>smart-kettle</artifactId>
    <name>smart-kettle</name>
    <version>1.0.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <skipTests>true</skipTests>
    </properties>

    <!-- 当前Module需要用到的依赖,按自己需求添加,版本号在父类已经定义了,这里不需要再次定义 -->
    <dependencies>
        <dependency>
            <groupId>org.yaukie.frame</groupId>
            <artifactId>x1-simple-job</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.jaxrs</groupId>
                    <artifactId>jackson-jaxrs-json-provider</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>javax.servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 定义 mysql 版本 -->
        <dependency>
            <groupId>org.yaukie.core</groupId>
            <artifactId>x-common-base</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                </exclusion>
            </exclusions>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
        <!--降低MySQL版本,kettle中连接mysql资源库使用的是低版本驱动 -->
        <dependency>
            <groupId>mm.mysql</groupId>
            <artifactId>mm.mysql</artifactId>
            <version>2.0.7</version>
        </dependency>

        <dependency>
            <groupId>org.yaukie.core</groupId>
            <artifactId>x-common-auth</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>


        <dependency>
            <groupId>org.yaukie.xtl</groupId>
            <artifactId>x-kettle-core</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>pentaho</groupId>
                    <artifactId>simple-jndi</artifactId>
                </exclusion>
            </exclusions>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>


        <!-- 定义 lombok 版本 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--kettle核心包引入结束-->
    </dependencies>
    <!--定义spring boo maven 插件-->
    <build>
        <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <!--<exclude>**/*.yml</exclude>-->
                    <!--<exclude>**/*.kjb</exclude>-->
                </excludes>
                <!--<filtering>true</filtering>-->
            </resource>


            <!--如果不加此文件,本地跑会有问题-->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>


            <!--如果要构建一键启动,重新打包,请按照如下方式修改pom.xml 文件,这种方式打成的jar包,不会包括xml以及kjb文件-->
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/*.yml</exclude>
                    <exclude>**/*.kjb</exclude>
                </excludes>
                <filtering>true</filtering>
            </resource>
        </resources>


        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.5.RELEASE</version>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
                    <mainClass>org.yaukie.frame.Start</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <archive>
                        <manifest>
                            <!--运行jar包时运行的主类,要求类全名-->
                            <mainClass>org.yaukie.frame.Start</mainClass>
                            <!-- 是否指定项目classpath下的依赖 -->
                            <addClasspath>true</addClasspath>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            <!-- 指定依赖的时候声明前缀 -->
                            <!--<classpathPrefix>../lib</classpathPrefix>-->
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <!--<plugin>-->
            <!--<artifactId>maven-assembly-plugin</artifactId>-->
            <!--<configuration>-->
            <!--<descriptors>-->
            <!--<descriptor>src/main/assembly/assembly.xml</descriptor>-->
            <!--</descriptors>-->
            <!--</configuration>-->
            <!--<executions>-->
            <!--<execution>-->
            <!--<id>make-assembly</id>-->
            <!--<phase>package</phase>-->
            <!--<goals>-->
            <!--<goal>single</goal>-->
            <!--</goals>-->
            <!--</execution>-->
            <!--</executions>-->
            <!--</plugin>-->
        </plugins>
    </build>


</project>

六、其他配置

这里的配置是本人测试过程中发现的配置修改
在这里插入图片描述
在这里插入图片描述

七、启动

首先启动后端代码,记得刷新一下maven
在这里插入图片描述
启动成功截图如下
在这里插入图片描述

然后是前端启动,前端cmd进入前端目录,执行npm run dev即可
在这里插入图片描述
访问地址:http://localhost:8081/kettle-admin/login
在这里插入图片描述
在这里插入图片描述
至此,登录成功

八、总结

以上就完成了整个smart-kettle的本地部署,不过部署完成后,在使用的过程中发现了一些问题,例如插件引入的问题,怎么连接其他数据库问题等,后面有时间可以再整理一版内容出来

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/874262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python学习笔记第五十七天(Pandas 数据清洗)

Python学习笔记第五十七天 Pandas 数据清洗Pandas 清洗空值isnull() Pandas替换单元格mean()median()mode() Pandas 清洗格式错误数据Pandas 清洗错误数据Pandas 清洗重复数据duplicated()drop_duplicates() 后记 Pandas 数据清洗 数据清洗是对一些没有用的数据进行处理的过程…

最强自动化测试框架Playwright(19)- 事件

Playwright允许收听网页上发生的各种类型的事件&#xff0c;例如网络请求&#xff0c;创建子页面&#xff0c;专用工作人员等。有几种方法可以订阅此类事件&#xff0c;例如等待事件或添加或删除事件侦听器。 等待事件 大多数情况下&#xff0c;脚本需要等待特定事件的发生。…

实训一 :Linux的启动、关机及登录

实训一 &#xff1a;Linux的启动、关机及登录 2017 年 2 月 22 日 今日公布 实训目标 完成本次实训&#xff0c;将能够&#xff1a; 描述Linux的开机过程。在图形模式和文本模式下登录Linux。关闭和重启Linux 实训准备 一台已安装RHEL6的虚拟计算机&#xff0c;Linux虚拟…

【嵌入式环境下linux内核及驱动学习笔记-(19)LCD驱动框架2-FrameBuffer】

目录 1、 Frmebuffer(帧缓冲&#xff09;操作介绍1.1 显示设备的抽象1.2 内存映像1.3 输出画面数据1.4 用户态下操作屏显1.4.1 用文件I / O 操作屏显1.4.2 mmap() 函数1.4.3 ioctl()函数1.4.5 用命令操作屏1.4.6 测试程序 2、Framebuffer总体框架2.1 框架要点2.2 fbmem.c分析2.…

中小企业项目管理软件推荐:选择适合的工具提升项目效率!

中小企业项目管理软件有哪些&#xff1f;Zoho Projects是一款好用无广告的项目管理软件。当个小创业者是真的不容易&#xff0c;不仅要管理团队&#xff0c;还要管理团队项目。很多团队之前用了好多项目管理的软件&#xff0c;但是都不太满意。但是如果你经常参加创业者聚会上&…

安装cuda/cudann和pytorch

一、查看驱动信息 # 进入CMD输入命令 nvidia-smi 也可以右下角图标打开NVIDIA 设置进行查看 二、下载安装CUDA 1、下载 下载地址 https://developer.nvidia.com/ 2、安装 推荐自定义安装。建议只勾选Cuda&#xff0c;只安装这一个就好&#xff0c;以免报错安装失败。 3、验证…

泰卦-地天卦

前言&#xff1a;否极泰来&#xff0c;但在易经里是泰卦在前&#xff0c;让我们分析下在否所期待否极后的泰卦是什么样的&#xff1f;本篇博客分析泰卦的卦辞和爻辞。 卦辞 小往大来&#xff0c;吉&#xff0c;亨。 篆曰&#xff1a;泰&#xff0c;小往大来&#xff0c;吉亨。…

7-8 计算存款利息

本题目要求计算存款利息&#xff0c;计算公式为interestmoney(1rate)year−money&#xff0c;其中interest为存款到期时的利息&#xff08;税前&#xff09;&#xff0c;money是存款金额&#xff0c;year是存期&#xff0c;rate是年利率。 输入格式&#xff1a; 输入在一行中…

035_小驰私房菜_Qualcomm账号注册以及提case流程

全网最具价值的Android Camera开发学习系列资料~ 作者:8年Android Camera开发,从Camera app一直做到Hal和驱动~ 欢迎订阅,相信能扩展你的知识面,提升个人能力~ 一、账号注册 1)登陆高通网站Wireless Technology & Innovation | Mobile Technology | Qualcomm, 采用…

Ceph Reef版本 RBD 性能测试:80万写IOPS(10节点、60个NVMe SSD)

2023-05-16 08:30 发表于上海 摘自&#xff1a;https://mp.weixin.qq.com/s/mKkPElmCktoZaRk0m0IbqA 1、背景 Ceph 社区最近冻结了即将发布的 Ceph Reef 版本&#xff0c;今天我们研究一下 Ceph Reef 版本在 10 个节点、60 个 NVMe 磁盘的集群上的 RBD 性能。 在确保硬件没有…

16收16发ARINC429模块

6通道发送&#xff0c; 16通道接收 发送通道: 每路发送通道FIFO大小为&#xff1a;511 x 32bit(CHR32216/32316) &#xff0c;缓存256条发送消息(CHR32216-EX/32316-EX) 发送FIFO可设置复位 可设置消息间隔&#xff0c; 字间隔和发送帧的预定数呈 发送波特率100Kbps、50Kbps、…

春秋云镜 CVE-2020-0784

春秋云镜 CVE-2020-0784 wordpress插件 Title Experiments Free < 9.0.1 SQLI 靶标介绍 wordpress插件 Title Experiments Free < 9.0.1 没有对用户输入进行过滤和转义&#xff0c;导致了SQL注入。 启动场景 漏洞利用 exp POST /wp-admin/admin-ajax.php HTTP/1.1 H…

NeuralNLP-NeuralClassifier的使用记录(二),训练预测自己的【中文文本多分类】

NeuralNLP-NeuralClassifier的使用记录&#xff0c;训练预测自己的【中文文本多分类】 数据准备&#xff1a; ​ 与英文的训练预测一致&#xff0c;都使用相同的数据格式&#xff0c;将数据通过代码处理为JSON格式&#xff0c;以下是我使用的一种&#xff0c;不同的原数据情况…

关于配电室升级为智能运维模式的问题

配电室安全稳定运行、电能使用高效节能是每个企业关注的问题&#xff0c;然而&#xff0c;由于供用电系统的运行维护又是一项复杂而且专业性很强的工程&#xff0c;如果没有先进的技术手段&#xff0c;靠人工值班、人工操作的运行方式&#xff0c;运行管理成本大&#xff0c;安…

【什么是摆线减速器?设计、3D 打印和测试】

【什么是摆线减速器&#xff1f;设计、3D 打印和测试】 1. 什么是摆线驱动&#xff1f;2. 如何设计摆线驱动器3. DIY摆线驱动3D模型4. 三维设计5. 3D打印制造6. 组装摆线齿轮箱7. 测试摆线驱动器 在本教程中&#xff0c;我们将学习什么是摆线驱动器&#xff0c;它是如何工作的&…

React Native 图片组件基础知识

在 React Native 中使用图片其实跟 HTML 中使用图片一样简单&#xff0c;在 React Native 中我们使用Image组件来呈现图片的内容&#xff0c;其中主要的属性有&#xff1a;source。这个属性主要是设置图片的内容&#xff0c;它可以是网络图像地址、静态资源、临时本地图像以及本…

电气测试相关

项目&#xff1a; 长期过电压 瞬态过电压 瞬态欠压 跳跃启动 卸载 纹波电压 电源电压缓慢下降和上升 电源电压缓慢下降、快速上升 复位行为 短暂中断 启动脉冲 带电气系统控制的电压曲线 引脚中断 连接器中断 反极性 信号线和负载电路短路 启动行为 对分流不…

【数据结构系列】链表

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

谈谈我的感受

虽然清楚知识需要靠时间沉淀&#xff0c;但在看到自己做不出来的题别人会做&#xff0c;自己写不出的代码别人会写时还是会感到焦虑怎么办&#xff1f; 感受 当我们比别人弱的时候&#xff0c;可能会感到挫败、失落、沮丧或无力。这种感受往往是因为我们与自己设定的标准或别人…

RocketMQ 5.1.0 源码详解 | Producer 发送流程

文章目录 初始化DefaultMQProducer实例发送流程DefaultMQProducer#sendDefaultMQProducerImpl#sendMQClientInstance#updateTopicRouteInfoFromNameServer使用特定 topic 获取路由信息使用默认 topic 获取路由信息 DefaultMQProducerImpl#sendDefaultImpl发送流程总结 初始化De…