1.åºäºspring-bootçkettleè°åº¦
2.kettle 源码 怎么运行repositories插件
3.利用Kettle进行数据同步(下)
åºäºspring-bootçkettleè°åº¦
大家好ï¼ææ¯å¸ æ°å°ä¼ï¼ç±äºæè¿å ¬å¸é¡¹ç®è¾è½¬å¤§æ°æ®ï¼éè¦åæ°æ®æ½åçå·¥ä½ï¼kettleæ¯ç®åæ¯è¾æççETLå·¥å ·ï¼èä¼ ç»çkettle客æ·ç«¯å¨ä»»å¡è°åº¦è¿æ¹é¢æ²¡æå®ç°ï¼äºæ¯å¨ç½ä¸å¯»æ¾å¼æºçkettleè°åº¦é¡¹ç®ãkettle-manager
ä¸é¨ä¸ºkettleè¿æ¬¾ä¼ç§çETLå·¥å ·å¼åçweb端管çå·¥å ·ãè²ä¼¼æºç è·èµ·æ¥æ¯è¾è´¹å²ï¼åç§ç¼ºå ï¼äºæ¯æ为大家ä¸é¨æ´çäºä¸ä¸è¿ä¸ªé¡¹ç®ãå ¨maven管çç
/konglinghai/kettle
å¦ææ³å¦ä¹ kettleçå¯ä»¥ç¨æçgithub项ç®è¿è¡ï¼æ¯ç«æå¨ç¾¤é天天åç°é½æ人å 为æ æ³è¿è¡é¡¹ç®èæé®ã
kettleçéæ
ç±äºkettle-manageræ¯ä¸ä¸ªå®æ´çweb项ç®ï¼åè½ä¹æ¯è¾å¤ï¼ä½æ¯å®é åºç¨ä¸ï¼åªéç¨å°å ä¸ªå ³é®çç¹ï¼å°±è½å¤å®ç°kettleçwebè°åº¦ãå æ¤æ们éè¦ækettleçè°åº¦ä»é¡¹ç®ä¸å离åºæ¥ï¼è¿æ ·æè½å¤æ´å¥½å°éæå°èªå·±ç项ç®ä¸å»ãäºæ¯æè§å¾å°å®æ½åºæ¥ï¼åºäºspring-bootï¼å ·ä½çä¸å¡ä¹å离åºæ¥ï¼kettleä½ä¸ºä¸ä¸ªç»ä»¶ã
renren-kettle
项ç®è¯´æ
项ç®å®ç°åè½
项ç®ç»æ
å®æ¶websocketçæ¥å ¥ä¾å
é¨ç½²æå
å¦éå å ¥é¡¹ç®ï¼è¯·é®ä»¶ @qq.com
kettle 源码 怎么运行repositories插件
1.2. 编译源码
项目加载eclipse
kettle项目拷贝eclipseworkspace目录eclipse新建java project项目名称拷贝kettle文件夹名称致
项目导入eclipse现错误图文件源码全部注释掉
编译
打build.xml,源码 右边Outline 点击kettle-run as -ant build
第编译候需要网载几文件放C:\Documents and Settings\Administrator\.subfloor网络载比较慢直接文件放C:\Documents and Settings\Administrator\编译完bin目录.bat文件拷贝Kettle目录点击Spoon.bat运行运行功代表编译已近通
用源码运行Spoon
Kettle源码工程本身能linux位机器调试swt配置linux库所运行源码前需要修改winswt步骤:工程à属性àJava Build Pathàlibrariesàadd jars
linuxSWT库删除
打src-uiàorg.pentaho.di.ui.spoonàSpoon.java Run As àjava application
二.源码析
2.1. 修改kettle界面
修改初始化界面
打package org.pentaho.di.ui.spoonSpoon.Java找main函数该main函数Spoon工具入口找语句
Splash splash = new Splash(display);
该语句spoon初始化显示界面跳定义Splash.java面函数
canvas.addPaintListener(new PaintListener() {
publicvoid paintControl(PaintEvent e) {
String versionText = BaseMessages.getString(PKG, "SplashDialog.Version") + " " + Const.VERSION; //$NON-NLS-1$ //$NON-NLS-2$
StringBuilder sb = new StringBuilder();
String line = null;
try {
BufferedReader reader = new BufferedReader(newInputStreamReader(Splash.class.getClassLoader().getResourceAsStream("org/pentaho/di/ui/core/dialog/license/license.txt")));//$NON-NLS-1$
while((line = reader.readLine()) != null) {
sb.append(line + System.getProperty("line.separator")); //$NON-NLS-1$
}
} catch (Exception ex) {
sb.append(""); //$NON-NLS-1$
Log.warn(BaseMessages.getString(PKG, "SplashDialog.LicenseTextNotFound")); //$NON-NLS-1$
}
String licenseText = sb.toString();
e.gc.drawImage(kettle_image, 0, 0);
// If this is a Milestone or RC release, warn the user
if (Const.RELEASE.equals(Const.ReleaseType.MILESTONE)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.DeveloperRelease") + " - " + versionText; //$NON-NLS-1$ //$NON-NLS-2$
drawVersionWarning(e);
} elseif (Const.RELEASE.equals(Const.ReleaseType.RELEASE_CANDIDATE)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.ReleaseCandidate") + " - " + versionText; //$NON-NLS-1$//$NON-NLS-2$
}
elseif (Const.RELEASE.equals(Const.ReleaseType.PREVIEW)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.PreviewRelease") + " - " + versionText; //$NON-NLS-1$//$NON-NLS-2$
}
elseif (Const.RELEASE.equals(Const.ReleaseType.GA)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.GA") + " - " + versionText; //$NON-NLS-1$//$NON-NLS-2$
}
Font verFont = new Font(e.display, "Helvetica", , SWT.BOLD); //$NON-NLS-1$
e.gc.setFont(verFont);
e.gc.drawText(versionText, , , true);
// try using the desired font size for the license text
int fontSize = 8;
Font licFont = new Font(e.display, "Helvetica", fontSize, SWT.NORMAL); //$NON-NLS-1$
e.gc.setFont(licFont);
// if the text will not fit the allowed space
while (!willLicenseTextFit(licenseText, e.gc)) {
fontSize--;
licFont = new Font(e.display, "Helvetica", fontSize, SWT.NORMAL); //$NON-NLS-1$
e.gc.setFont(licFont);
}
e.gc.drawText(licenseText, , , true);
}
});
1. 修改背景
找ui/image/面kettle_splash.png替换该
2. 修改版本信息
找e.gc.drawText(versionText, , , true); 改e.gc.drawText("海康威视数据交换平台V1.0", , , true);
3. 修改面描述性文字
找e.gc.drawText(licenseText, , , true);改e.gc.drawText("作者:海康", , , true);
4. 预览效
利用Kettle进行数据同步(下)
上篇内容对基于kettle的数据同步工程的构建进行了介绍,entrypoint.kjb作为工程执行的下载入口。
为了减少操作成本,启动并确保数据同步过程稳定、源码安全,下载需要从更高层次进行抽象,启动传图识字 源码创建一个简单易用的源码系统。
以下是下载应用截图:
除了选择数据源和数据库,还增加了授权码,启动意味着只有授权范围内的源码用户才能使用该系统。
由于是下载内部使用,授权用户尚未实现后台管理,启动直接在应用数据库中添加,源码静夜思源码选择的下载数据源和数据库都通过配置文件生成。
文末会提供GitHub上的启动源码地址,有需要的读者可以进行二次开发。
一、数据库设计
数据库名称为kettle,目前包含两张表:
1、源码资本总部授权用户表。表中记录的用户可以使用数据同步系统。
2、同步记录表。记录用户的数据同步操作。
二、trend wave源码程序设计
系统简单实用,没有特别的设计。以下是重点说明的三点:
1、数据源及其参数配置。
在application.yml配置文件中,存在如下配置:
使用了springboot的辞职网页源码@ConfigurationProperties注解。
其中的DBSetting定义如下:
通过客户端传递的参数,可以定位到相应的参数设置。
2、集成kettle的API。
由于kettle相关jar包放在了自建的nexus私服上,因此如果使用maven管理jar包,需要在settings.xml配置文件中做一些修改:
其中的mirrorOf节点添加了!pentaho-releases,表示排除pentaho-releases。
然后,在springboot工程的pom.xml中指定pentaho-releases的url。
接下来是核心的对接代码,具体可以参考工程源码。
3、异步执行作业
由于Job的执行时间可能会很长,主要取决于数据量,因此一个request的来回可能会导致TIMEOUT,需要改为异步模式。
核心思想是:启动新的线程,客户端定时轮询执行结果。
三、总结
本文分两篇文章介绍了如何利用kettle进行数据同步,并实现一个简易的系统,以降低操作成本和出错率。
介绍到此,如有疑问,请留言。
欢迎fork我的工程代码。