在kettle中使用内存数据库H2

先前一直使用的是postgresql,因为网速的原因,所以打算将数据统一放到HDFS上,但是一条一条写HDFS是很慢的,全部写到本地文件再传到HDFS上也是一样慢,这样一来就有了本文,将部分先放到内存数据库中,然后再写到HDFS上,这样数据抽取和写入的速度一下翻了好几倍!好了,说说怎么在kettle中使用H2

先去下载H2,点击下载

我测试的时候下的是windows版本,解压后,执行h2/bin/h2.bat,执行成功后,会打开下图的界面

红框中的内容输入什么见下面代码

Database URLs
Embedded  //嵌入式
jdbc:h2:~/test  ‘test‘ in the user home directory
jdbc:h2:/data/test  ‘test‘ in the directory /data
jdbc:h2:test  in the current(!) working directory
In-Memory //内存式
jdbc:h2:mem:test  multiple connections in one process
jdbc:h2:mem:  unnamed private; one connection
Server Mode  //服务器模式
jdbc:h2:tcp://localhost/~/test  user home dir
jdbc:h2:tcp://localhost//data/test  absolute dir
Server start:java -cp *.jar org.h2.tools.Server 
Settings  //配制模式(这个我不多用)
jdbc:h2:..;MODE=MySQL compatibility (or HSQLDB,...)
jdbc:h2:..;TRACE_LEVEL_FILE=3 log to *.trace.db

我先试用的是内存模式,但是试了以后才发现,H2支持的场景对我不适用,因为内存模式,要求所有的链接都在一个进程内,这对于kettle来说是不现实的,如果非要用,那只能将创建表的语句,和使用表的模块放到一个transform中,如下图

看到了,最上面的图标是建表语句,下面的是往表中插入数据,必须这样使用,放到JOB中无效,只能在一个transform中,好了,看下图看看我们怎么用kettle连接内存模式的H2

以上这两种方式都可以连接到内存模式的H2,选择一种使用即可。

下面说说适合我场景的嵌入式模式

先看连接方式,只能这样连接

使用嵌入式模式的好处是,创建表的模块和入库的模块可以在两个不同的transform中,因为嵌入式的模式是将数据写到默认的硬盘上了,好了就先写到这儿了,快去试试,有啥问题,直接留言。

时间: 2024-08-05 23:00:19

在kettle中使用内存数据库H2的相关文章

kettle中实现动态SQL查询

kettle中实现动态SQL查询 在ETL项目中,通常有根据运行时输入参数去执行一些SQL语句,如查询数据.本文通过kettle中的表输入("table input")步骤来说明动态查询.参数查询.示例代码使用内存数据库(H2),下载就可以直接运行,通过示例学习更轻松. SQL查询语句中占位符绑定字段值 第一个接近动态语句的是大家熟悉的从SQL代码中执行,开始写一个SQL查询,包含一些占位符,然后绑定值到占位符,使之成为一个有效的查询并执行.根据需要可以绑定多个值并循环执行.本示例的名

Kettle中JavaScript内置函数说明

本文链接:https://blog.csdn.net/u010192145/article/details/102220563 我们在使用JavaScript组件的时候,在左侧核心树对象栏中可以看到Kettle为我们提供了很多简洁强大的内置函数,帮助我们在写脚本的时候对数据.参数变量等能很轻松的做处理,体验编码的感觉.本篇将详细介绍JavaScript组件中的函数功能 脚本组件包含的函数主要包括六大类,分别是: 字符串类型的函数(String Functions) 浮点型的函数(Numeric

kettle中denormalizer(列转行)的使用

需要列转行的数据分为两种:有主键和无主键,先说无主键的 转以前的内容 转以后的内容 看到了吧,转过来了,好来张整体流程图 开始分析: 第一个图标打开后为 这是第一步里面主要的一步,这里配置好了就可以进行第二步了. 因为没有主键,所以要给城市那一列添加一个相同的主键,这样数据在转成行的时候就可以转到同一行了,如果主键不同,转成行后,每一个主键为一行,这不是我们想要的. 打开列转行的界面为 图中的dummy是我们前一步添加的常量,关键字段选择城市,关键字段值就为城市的value,数据字段为人数的ke

kettle中调用java类

有时需要在kettle调用java类,如:验证.查询或自定义加密等.有时甚至连基本的数据访问都不那么简单,如获取一个存储文件或使用一个数据库连接,某些数据源可能封装在应用程序中,手工使用自定义的java客户端访问是唯一的方法.本文介绍如何在kettle中调用java类.示例代码在这里下载. 注:如果你使用kettle4.0及以上版本,也你也可以使用user defined java class 步骤实现.   Modified Java ScriptValue 步骤 关键要在kettle中使用M

kettle中使用JavaScript的一个例子

最近在使用kettle的时候遇到一个问题,需要对输入的一个字段进行格式化,逻辑比较复杂(需要做替换掉指定的字符串,然后将数字部分不足四位的数前边补0等操作),kettle中没有提供直接的插件来支持复杂的业务逻辑处理,所以就自己写代码来处理. kettle中可以支持Java代码和JavaScript代码,java代码我尝试了几次,不是太稳定,所以就使用了JavaScript 1.在左侧选择脚本中的 JavaScript代码 2.上个步骤传过来的字段 都在Input fields中,在JavaScr

kettle中访问前一行数据

 kettle中访问前一行数据 在kettle中,当需要访问数据流前一行数据时,很多人都是用javascript步骤的特性:实际上没有必要,不是说javascript步骤不好,主要是性能低,同时也增加了复杂度,因为写代码让javascript步骤难以理解,最好是使用kettle标准步骤实现.我们的原则是代码最小化,过程轻松. (The Analytic Query Step)分析查询步骤 TheAnalytic Query 步骤可以查找数据流中的前面行或后面行,并且取值到当前行,很多场合是非

Kettle中txt类型数据源作为输入需要注意的地方

文本类型在kettle中作为数据源的时候,需要注意的几点,ktr的机构如下图 1:txt文本的格式 2:文本输入控件的设置 --2.1:选择文件所在物理位置 --2.2:设置分隔符,注意头部数量去掉,不然第一行可能会丢掉,当然也可以根据这里设置从第几行开始抽取 --2.3:设置数据类型和字段名 PS:需要特别注意的就是文本文件的格式,文本中用:或者 | 或者 /做分割,那么设置分割字符后,数据就是分割后的多个列组成的一行数据每一个列名是在 文本输入控件中随意指定好的,在后面的data flow里

在kettle中实现数据验证和检查

在kettle中实现数据验证和检查 在ETL项目,输入数据通常不能保证一致性.在kettle中有一些步骤能够实现数据验证或检查.验证步骤能够在一些计算的基础上验证行货字段:过滤步骤实现数据过滤:javascript步骤能够实现更复杂的计算. 通常以某种方式查看那些数据是有缺陷的也是实用的,由于大多数ETL是无人值守执行的,所以通常ETL程序会把这些缺陷数据通知给ETL开发人员或管理员.建议把这些问题数据行保存到一个特定的公共表格中,以便跟踪这些数据:那么该表格应该包含一些元信息,如:执行转换的名

kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询

kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询 假设你需要实现非传统的数据库查询操作,为了讨论这种情景,我们假设你需要读取数据库中的正则表达式,然后检查输入的每行的字段匹配表达式的个数. 在javascript步骤执行数据库查询 在javascript步骤初始化的时候,查询数据库,获取正则表达式记录集.然后每一行的输入数据循环检查是否匹配表达式,如果匹配,记录变量加一,最后把结果写到到前行的新增字段中.思路很清楚,但是如何在javascript步骤实现数据库