pentaho 4.8 添加 kettle 默认情况下只对数据库资源库的支持
对于文件资源库是不支持的。
与文件资源库相比,数据库资源库不利于开发与维护。
pentaho在国内的资料很少,社区不太活跃,其稍微深入的问题都没有现成的答案。。。
看源码,发现其代码里面没有添加对文件资源库的支持。
好在 pentaho 与 kettle 的核心源码都看过。。。小小改动下,还是让其能够支持文件资源库了。。。
修改
org.pentaho.platform.plugin.action.kettle.KettleComponent类
搜索
PentahoSystem.getSystemSetting("kettle/settings.xml", "repository.type", "files").equals("rdbms");
发现有三处
验证系统设置
@Override protected boolean validateSystemSettings() { // set pentaho.solutionpath so that it can be used in file paths boolean useRepository = PentahoSystem.getSystemSetting("kettle/settings.xml", "repository.type", "files").equals("rdbms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ if (useRepository) { repositoriesXMLFile = PentahoSystem.getSystemSetting("kettle/settings.xml", "repositories.xml.file", null); //$NON-NLS-1$ //$NON-NLS-2$ repositoryName = PentahoSystem.getSystemSetting("kettle/settings.xml", "repository.name", null); //$NON-NLS-1$ //$NON-NLS-2$ username = PentahoSystem.getSystemSetting("kettle/settings.xml", "repository.userid", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ password = PentahoSystem.getSystemSetting("kettle/settings.xml", "repository.password", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ // Check the Kettle settings... if ("".equals(repositoryName) || username.equals("")) { //$NON-NLS-1$ //$NON-NLS-2$ // looks like the Kettle stuff is not configured yet... // see if we can provide feedback to the user... error(Messages.getErrorString("Kettle.ERROR_0001_SERVER_SETTINGS_NOT_SET")); //$NON-NLS-1$ return false; } boolean ok = ((repositoryName != null) && (repositoryName.length() > 0)); ok = ok || ((username != null) && (username.length() > 0)); return ok; } else { repositoriesXMLFile = PentahoSystem.getSystemSetting("kettle/settings.xml", "repositories.xml.file", null); //$NON-NLS-1$ //$NON-NLS-2$ repositoryName = PentahoSystem.getSystemSetting("kettle/settings.xml", "repository.name", null); //$NON-NLS-1$ //$NON-NLS-2$ // Check the Kettle settings... if ("".equals(repositoryName)) { //$NON-NLS-1$ //$NON-NLS-2$ // looks like the Kettle stuff is not configured yet... // see if we can provide feedback to the user... error(Messages.getErrorString("Kettle.ERROR_0001_SERVER_SETTINGS_NOT_SET")); //$NON-NLS-1$ return false; } boolean ok = ((repositoryName != null) && (repositoryName.length() > 0)); return ok; } }
其验证Action,注释一部分如下
@SuppressWarnings("unchecked") @Override public boolean validateAction() { ... if (isDefinedResource(KettleComponent.TRANSFORMFILE) || isDefinedResource(KettleComponent.JOBFILE)) { return true; } /* boolean useRepository = PentahoSystem.getSystemSetting("kettle/settings.xml", "repository.type", "files").equals("rdbms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ if (!useRepository) { error(Messages.getErrorString("Kettle.ERROR_0019_REPOSITORY_TYPE_FILES")); //$NON-NLS-1$ return false; }*/ if (isDefinedInput(KettleComponent.DIRECTORY) && (isDefinedInput(KettleComponent.TRANSFORMATION) || isDefinedInput(KettleComponent.JOB))) { return true; } ... }
修改其连接资源库部分
private Repository connectToRepository(final LogWriter logWriter) { boolean useRepository = PentahoSystem.getSystemSetting("kettle/settings.xml", "repository.type", "files").equals("rdbms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ if (!useRepository) { // if方法默认返回为空,这里添加对文件资源库的支持。 RepositoriesMeta repositoriesMeta = null; try { repositoriesMeta = new RepositoriesMeta(); } catch (Exception e) { error(Messages.getErrorString("Kettle.ERROR_0007_BAD_META_REPOSITORY"), e); //$NON-NLS-1$ return null; } if (ComponentBase.debug) { debug(Messages.getString("Kettle.DEBUG_POPULATING_META")); //$NON-NLS-1$ } try { // TODO: add support for specified repositories.xml files... repositoriesMeta.readData(); // Read from the default // $HOME/.kettle/repositories.xml // file. } catch (Exception e) { error(Messages.getErrorString("Kettle.ERROR_0018_META_REPOSITORY_NOT_POPULATED"), e); //$NON-NLS-1$ return null; } if (ComponentBase.debug) { debug(Messages.getString("Kettle.DEBUG_FINDING_REPOSITORY")); //$NON-NLS-1$ } // Find the specified repository. RepositoryMeta repositoryMeta = null; try { repositoryMeta = repositoriesMeta.findRepository(repositoryName); } catch (Exception e) { error(Messages.getErrorString("Kettle.ERROR_0004_REPOSITORY_NOT_FOUND", repositoryName), e); //$NON-NLS-1$ return null; } if (repositoryMeta == null) { error(Messages.getErrorString("Kettle.ERROR_0004_REPOSITORY_NOT_FOUND", repositoryName)); //$NON-NLS-1$ return null; } if (ComponentBase.debug) { debug(Messages.getString("Kettle.DEBUG_GETTING_REPOSITORY")); //$NON-NLS-1$ } Repository repository = null; try { repository = PluginRegistry.getInstance().loadClass(RepositoryPluginType.class, repositoryMeta.getId(), Repository.class); repository.init(repositoryMeta); } catch (Exception e) { error(Messages.getErrorString("Kettle.ERROR_0016_COULD_NOT_GET_REPOSITORY_INSTANCE"), e); //$NON-NLS-1$ return null; } // OK, now try the username and password if (ComponentBase.debug) { debug(Messages.getString("Kettle.DEBUG_CONNECTING")); //$NON-NLS-1$ } return repository; } 。。。 }
具体修改后的源代码文件以及生成的类文件在附件中。
新的版本
将改为rdbms
并且,默认的资源库配置文件在其主用户目录的.kettle文件夹下
查看用户主目录的方法如下:
linux:
su 用户
cd ~/
就可以看到当前的用户目录
或者 echo $HOME
...
相关推荐
8.3.0.0-371 pentaho-kettle kettle-core
ce\pentaho-solutions\system\data-access\resources\gwt`目录下,对`main_wizard_panel_supported_languages.properties`和`databasedialog_supported_languages.properties`文件添加`zh=中文`,并创建相应的中文...
总结来说,配置Pentaho 4.8涉及到设置JDK环境变量、启动和停止控制台、选择数据库、执行数据库脚本、复制JDBC驱动以及更新配置文件。通过遵循这些步骤,你将能够成功地部署和运行Pentaho BI Server,充分利用其数据...
其次,Kettle 支持多种数据源,包括数据库、文件系统、Web 服务、云存储等。在 8.3 版本中,可能对某些数据源的连接或操作进行了优化,增强了对新出现的数据格式如 JSON 和 XML 的支持,以适应不断变化的数据环境。 ...
在Java环境下,这些JAR文件会被添加到项目的类路径中,以便程序能够访问和使用Pentaho Kettle的功能。开发人员可以使用Pentaho Kettle的API来创建自定义的转换和作业,或者通过图形界面(PDI的Spoon工具)来设计和...
通过这个8.2版本的压缩包,你可以获取到完整的Pentaho Kettle安装文件,包括所有必要的库和组件,按照博客中的教程,可以动手实践Pentaho Kettle的使用,加深对ETL过程的理解。对于学习和开发基于Pentaho Kettle的...
pentaho-kettle-master.zip kettle(ETL)开源9.0版本源码包,2019年6月下载的 下载地址 https://github.com/pentaho/pentaho-kettle
Pentaho Kettle是一款强大的数据集成工具,也被...总的来说,这套资料为学习和掌握Pentaho Kettle提供了一个全面的资源库,不仅涵盖了基础操作,还包括了进阶开发和实战技巧,有助于提升用户在数据集成领域的专业能力。
"Pentaho-Kettle安装及使用说明" Pentaho-Kettle是一款开源的ETL(Extract-Transform-Load)工具,旨在帮助用户从不同的数据源中抽取、转换和装载数据。下面是Pentaho-Kettle的安装及使用说明。 什么是Kettle? ...
Kettle资源库支持版本控制,这意味着你可以保存不同版本的转换和作业,以便回溯到之前的版本。这对于迭代开发和故障排查非常有用。 6. **权限管理** Kettle资源库可以设置用户权限,控制哪些用户可以访问、修改或...
使用Pentaho kettle 批量下载文件 的示例代码 包含三个文件,按执行顺序依次为:main.kjb、filelist.ktr、download.kjb。 压缩包中有2个版本的源码。 一个源码是从“txt文件”中读入URL路径,下载文件; 一个源码是...
Kettle支持多种数据源,包括关系型数据库、文件系统、云存储、Web服务等,并且可以与大数据平台如Hadoop、Spark等集成。 在这个9.0.0.2-R版本的源码中,开发者可以深入理解Kettle的工作原理和实现机制。源码分析有...
在解压"pentaho-kettle-7.1.0.1-R"压缩包后,用户可以找到源代码、库文件、文档、示例以及运行所需的配置文件,这对于开发者来说是一个宝贵的资源,他们可以在此基础上进行二次开发,创建个性化的数据集成解决方案。...
Kettle file repository 是一种基于文件系统的资源库,无需用户登录,直接进行操作。这种类型的资源库无需用户权限控制。 在创建资源库时,需要注意一些重要的细节,例如:在删除资源库中单个内容时,不会提示“ ...
Kettle(也称为Pentaho Data Integration或PDI)是一个强大的ETL(提取、转换、加载)工具,用于数据整合和大数据处理。资源库(Repository)是Kettle的核心组件之一,它提供了对作业(Job)和转换(Transformation...
Kettle资源库的创建是一个关键步骤,它是Kettle(Pentaho Data Integration,简称PDI)工具中的核心组成部分,用于集中管理和版本控制数据转换和工作流。在Kettle中,资源库是存储元数据和工作流的地方,允许团队...
Pentaho Kettle包含丰富的转换步骤,如表输入、表输出、文本文件输入、文本文件输出、数据库连接、过滤、聚合、清洗、转换等。每个步骤都可以进行复杂的配置,满足各种数据处理需求。 五、Kettle的作业控制 作业...