Logo



kettle转换源码(kettle允许简易转换)

kettle的转换可以调用动态库吗

编译源码 将项目加载到eclipse 将kettle项目拷贝到eclipse的workspace目录下,在eclipse中新建java project,项目名称和你拷贝过来的kettle文件夹名称一致 项目导入到eclipse中会出现一个错误,如下图,将这个文件的源码全部注释掉

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源码工程本身能linux64位机器调试swt配置linux64库所运行源码前需要修改win32swt步骤:工程à属性àJava Build Pathàlibrariesàadd jars

linux64SWT库删除

打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", 11, SWT.BOLD); //$NON-NLS-1$

e.gc.setFont(verFont);

e.gc.drawText(versionText, 290, 205, 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, 290, 290, true);

}

});

1. 修改背景图片

找ui/image/面kettle_splash.png替换该图片

2. 修改版本信息

找e.gc.drawText(versionText, 290, 205, true); 改e.gc.drawText("海康威视数据交换平台V1.0", 290, 205, true);

3. 修改面描述性文字

找e.gc.drawText(licenseText, 290, 290, true);改e.gc.drawText("作者:海康", 290, 290, true);

4. 预览效

kettle源码搭建运行时出现错误

将安装包pdi-ce-5.4.0.1-130\data-integration\ui目录下的所有文件拷贝到源码包pentaho-kettle-5.4.0.1-R\ui目录下,即可解决~~

kettle 实现列转行,行专列,源码如何debug跟踪调试?

本文主要记录kettle列转行控件的使用。

1、用例脚本

create TABLE studentInfo

(

    studentno int,

    Cname varchar(10),

    grade int

);

insert into studentInfo values(2018100,'语文',81);

insert into studentInfo values(2018100,'数学',82);

insert into studentInfo values(2018100,'英语',83);

insert into studentInfo values(2018101,'语文',71);

insert into studentInfo values(2018101,'数学',71);

insert into studentInfo values(2018101,'英语',72);

insert into studentInfo values(2018102,'语文',91);

insert into studentInfo values(2018102,'数学',92);

insert into studentInfo values(2018102,'英语',93);

INSERT INTO studentInfo VALUES(2018103,'语文',60);

INSERT INTO studentInfo VALUES(2018103,'数学',61);

INSERT INTO studentInfo VALUES(2018103,'英语',94);

commit;

————————————————

kettle可以在同一个数据库里进行数据转换吗

在kettle常常有处理从一个源数据中做转换.做转换的时候, 需要去查另一个数据库.

这种问题遇到数据小时候还好办. 但是数据魇 时候就麻烦来了.

下面针对三种情况做具体情况的选择办法

先上一个图

[/img]

1. 当需要转换的数据特别大的时候, 例如: 10W条以上.或者100W条以上时.

上图中,hadoop数据导入,导入的数据如果够多,例如100W条以上,其中一个字段需要查询数据库中查询,而这个字段的类型并不多,例如只有10个类型或者数据库中就只有这10个类型.那么,可以走线路2, 并且线路2中的 "使用缓存" 可以打勾,也可以不打.当然你这个源里的数据太多,打上当然最好了.因为省得再去你的数据库里再查.

但是当源里的数据类型还是只有10个类型,但是你的数据库里面存了有10000条记录时,怎么办?

有两种解决办法:

1).线路2:并且查询节点中的 "使用缓存" 不能打勾.

2).线路1,并在"带条件的结果查询供流查询使用" 这个结点中,用一个SQL,过滤一下数据,然后尽可能地把那里包括的这些记录查出来.这样在流里的比对时.也很快很多.必竟是在内存里做运算了

2. 查另一个数据库的数据量大时,而你的源数据不大.

最好的选择是

线路1,并在"带条件的结果查询供流查询使用" 这个结点中,用一个SQL,过滤一下数据,然后尽可能地把那里包括的这些记录查出来.这样在流里的比对时.也很快很多.必竟是在内存里做运算了

3. 当两个数据源都非常大时(最不想遇到的)

这种情况是最不想遇到的办法

一种选择:

1).线路2中的 "使用缓存" 打勾.

当然还有别的更复杂但是会更快的办法.适用场景比较少,不再详细写了.

如何使用kettle源码更改spoon的东西

1.2. 编译源码

将项目加载到eclipse

将kettle项目拷贝到eclipse的workspace目录下,在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源码工程本身可能是在linux64位机器上调试的,swt配置是linux64的库,所有在运行源码前需要修改成win32的swt,步骤如下:工程à属性àJava Build Pathàlibrariesàadd jars

然后将linux64的SWT库删除

最后打开src-uiàorg.pentaho.di.ui.spoonàSpoon.java, Run As àjava application

二.源码分析

2.1. 修改kettle界面

修改初始化界面

打开package org.pentaho.di.ui.spoon的Spoon.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", 11, SWT.BOLD); //$NON-NLS-1$

e.gc.setFont(verFont);

e.gc.drawText(versionText, 290, 205, 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, 290, 290, true);

}

});

1. 修改背景图片

找到ui/image/下面的kettle_splash.png,替换该图片

2. 修改版本信息

找到e.gc.drawText(versionText, 290, 205, true); 改为e.gc.drawText("海康威视数据交换平台V1.0", 290, 205, true);

3. 修改下面的描述性文字

找到e.gc.drawText(licenseText, 290, 290, true);改为e.gc.drawText("作者:海康", 290, 290, true);

4. 预览效果

  kettle转换源码 

发布者  :  访客  2022/06/05  回复

ont(e.display, "Helvetica", fontSize, SWT.NORMAL); //$NON-NLS-1$e.gc.setFont(licFont);// if the text will not fit the allowed spacewhile (!willLicen

发布者  :  访客  2022/06/06  回复

on.bat运行运行功代表编译已近通用源码运行SpoonKettle源码工程本身能linux64位机器调试swt配置linux64库所运行源码前需要修改win32swt步骤:工程à属性àJava Build Pathàlibrariesàadd

发布者  :  访客  2022/06/05  回复

r(new PaintListener() {publicvoid paintControl(PaintEvent e) {String versionText =

发布者  :  访客  2022/06/05  回复

org.pentaho.di.ui.spoonSpoon.Java找main函数该main函数Spoon工具入口找语句Splash splash = new Splash(display);该语句spoon初始化显示界面跳定义Splash.java面函数canvas.addPaintLis


评论


最新评论