当前位置:首页 » 文件管理 » kettle清除缓存

kettle清除缓存

发布时间: 2022-10-01 16:10:41

Ⅰ 使用kettle可以进行批处理操作吗

可以啊。kettle的job就相当于批处理,您可以把多个transform和job组合到到一个新job中去,但是要考虑好数据库连接和任务之间的关系,避免多任务冲突的情况,包括网络、服务器缓存、磁盘阵列等方面的占用。

Ⅱ kettle表输入完成但是插入更新一直没反应

如果不修改,默认的格式是“常规”,会导致原本以文本格式储存的数字、或者日期格式的内容等出现错乱。比如原来如果是0001的内容,会自动被辨识为1,原来的日期可能会变成五位数字。最好还是根据各个列的值设定一下属性。

Ⅲ Kettle启动时怎么增大缓存

修改spoon.bat文件中的

if"%PENTAHO_DI_JAVA_OPTIONS%"==""setPENTAHO_DI_JAVA_OPTIONS="-Xmx1200m""-XX:MaxPermSize=256m"

根据物理内存大小修改PENTAHO_DI_JAVA_OPTIONS="-Xmx1200m" 建议物理内容的一半

Ⅳ kettle spoon启动之后为什么会在桌面创建一个名叫data-integration的文件夹,怎么让它放在其他地方

是之前的一个旧线程遗留的,可以采取以下步骤:

1.关闭pdi(kettle)客户端

2. 删除data-文件夹(安装的目录)


4.重新启动客户端 - 可能需要一分钟,因为它将重建缓存,重建完成就不会再建文件夹了

Ⅳ kettle内存占用怎么解决

kettle工具本身也会占用很大的内存,可以将需要执行的job用kitchen命令写成bat脚本,这样就可以直接在windows上运行,节省很大的内存占用,如果需要定时执行,可以添加到计划任务中。

Ⅵ kettle 建资源库 The version of the repository is -1.-1.

你替换成了 1.1.30 版本之前确信你已经删除掉了所有旧的版本?要知道 windows 喜欢在 system32 下某个隐藏的目录下复制一份 dll 的副本(具体哪个 dll 会复制到这里我也不确定,你得手工检查一次,Windows\System32 下搜索一次,把所有同名的删除掉),隐藏的哦,需要在文件夹选项中把它显示出来,把那些缓存的版本也删除干净。

把下面这段文字保存成一个 search.bat:
1
@echo File %1 is found at %~dp$PATH:1
然后输入命令:
1
2
C:\>search jscript.dll
File jscript.dll is found at C:\WINDOWS\<a href="https://www..com/s?wd=system32&tn=44039180_cpr&fenlei=-EUBtzPj04njbznHcznjRknjnknWf" target="_blank" class="-highlight">system32</a>\
我们能用它找出来你的 dll 到底是从哪个目录下找到的,每次你删除一个 dll 后再运行一次这个命令检查还有哪个目录下有它。确保在 tomcat\bin 目录之外再也没有了,以后就把你最新的版本放在 tomcat\bin 下就可以了。

Ⅶ kettle设置了一个变量,执行第一次的时候提示出现不支持的sql92,然后再运行一次job变量就正常使用了

1. Join
我得到A 数据流(不管是基于文件或数据库),A包含field1 , field2 , field3 字段,然后我还有一个B数据流,B包含field4 , field5 , field6 , 我现在想把它们 ‘加’ 起来, 应该怎么样做.
这是新手最容易犯错的一个地方,A数据流跟B数据流能够Join,肯定是它们包含join key ,join key 可以是一个字段也可以是多个字段。如果两个数据流没有join key ,那么它们就是在做笛卡尔积,一般很少会这样。比如你现在需要列出一个员工的姓名和他所在部门的姓名,如果这是在同一个数据库,大家都知道会在一个sql 里面加上where 限定条件,但是如果员工表和部门表在两个不同的数据流里面,尤其是数据源的来源是多个数据库的情况,我们一般是要使用Database Join 操作,然后用两个database table input 来表示输入流,一个输入是部门表的姓名,另一个是员工表的姓名,然后我们认为这两个表就可以 ”Join” 了,我们需要的输出的确是这两个字段,但是这两个字段的输出并不代表只需要这两个字段的输入,它们之间肯定是需要一个约束关系存在的。另外,无论是在做 Join , Merge , Update , Delete 这些常规操作的时候,都是先需要做一个compare 操作的,这个compare 操作都是针对compare key 的,无论两个表结构是不是一样的,比如employee 表和department 表,它们比较的依据就是employee 的外键department_id , 没有这个compare key 这两个表是不可能连接的起来的.. 对于两个表可能还有人知道是直接sql 来做连接,如果是多个输入数据源,然后是三个表,有人就开始迷茫了,A表一个字段,B表一个字段,C表一个字段,然后就连Join操作都没有,直接 database table output , 然后开始报错,报完错就到处找高手问,他们的数据库原理老师已经在吐血了。如果是三个表连接,一个sql 不能搞定,就需要先两个表两个表的连接,通过两次compare key 连接之后得到你的输出,记住,你的输出并不能代表你的输入. 下面总结一下:
1. 单数据源输入,直接用sql 做连接
2. 多数据源输入,(可能是文本或是两个以上源数据库),用database join 操作.
3. 三个表以上的多字段输出.
2. Kettle的数据库连接模式
Kettle的数据库连接是一个步骤里面控制一个单数据库连接,所以kettle的连接有数据库连接池,你可以在指定的数据库连接里面指定一开始连接池里面放多少个数据库连接,在创建数据库连接的时候就有Pooling 选项卡,里面可以指定最大连接数和初始连接数,这可以一定程度上提高速度.
3. transaction
我想在步骤A执行一个操作(更新或者插入),然后在经过若干个步骤之后,如果我发现某一个条件成立,我就提交所有的操作,如果失败,我就回滚,kettle提供这种事务性的操作吗?
Kettle 里面是没有所谓事务的概念的,每个步骤都是自己管理自己的连接的,在这个步骤开始的时候打开数据库连接,在结束的时候关闭数据库连接,一个步骤是肯定不会跨session的(数据库里面的session), 另外,由于kettle是并行执行的,所以不可能把一个数据库连接打开很长时间不放,这样可能会造成锁出现,虽然不一定是死锁,但是对性能还是影响太大了。ETL中的事务对性能影响也很大,所以不应该设计一种依赖与事务方式的ETL执行顺序,毕竟这不是OLTP,因为你可能一次需要提交的数据量是几百 GB都有可能,任何一种数据库维持一个几百GB的回滚段性能都是会不大幅下降的.
4. 我真的需要transaction 但又不想要一个很复杂的设计,能不能提供一个简单一点的方式
Kettle 在3.0.2GA版中将推出一种新功能,在一个table output 步骤中有一个Miscellaneous 选项卡,其中有一个Use unique connections 的选项,如果你选中的话就可以得到一个transaction 的简单版,
由于是使用的单数据库连接,所以可以有错误的时候回滚事务,不过要提醒一点是这种方式是以牺牲非常大的性能为前提条件的,对于太大的数据量是不适合的(个人仍然不建议使用这种方式)
5. temporary 表如何使用
我要在ETL过程中创建一个中间表,当某个条件成立的时候,我要把中间表的数据进行转换,当另一条件成立的时候我要对中间表进行另一个操作,我想使用数据库的临时表来操作,应该用什么步骤。
首先从temp 表的生命周期来分,temp分为事务临时表和会话临时表,前面已经解释过了,kettle是没有所谓事务的概念的,所以自然也没有所谓的事务临时表。 Kettle的每个步骤管理自己的数据库连接,连接一结束,kettle也就自然丢掉了这个连接的session 的handler , 没有办法可以在其他步骤拿回这个session 的handler , 所以也就不能使用所谓的会话临时表,当你尝试再开一个连接的时候,你可以连上这个临时表,但是你想要的临时表里面的数据都已经是空的(数据不一定被清除了,但是你连不上了),所以不要设计一个需要使用临时表的转换
之所以会使用临时表,其实跟需要 ”事务” 特性有一点类似,都是希望在ETL过程中提供一种缓冲。临时表很多时候都不是某一个源表的全部数据的镜像,很多时候临时表都是很小一部分结果集,可能经过了某种计算过程,你需要临时表无非是基于下面三个特性:
1. 表结构固定,用一个固定的表来接受一部分数据。
2. 每次连接的时候里面没有数据。你希望它接受数据,但是不保存,每次都好像执行了truncate table 操作一样
3. 不同的时候连接临时表用同一个名字,你不想使用多个连接的时候用类似与temp1 , temp2 , temp3 , temp4 这种名字,应为它们表结构一样。
既然临时表不能用,应该如何设计ETL过程呢?(可以用某种诡异的操作搞出临时表,不过不建议这样做罢了)
如果你的ETL过程比较的单线程性,也就是你清楚的知道同一时间只有一个这样的表需要,你可以创建一个普通的表,每次连接的时候都执行truncate 操作,不论是通过table output 的truncate table 选项,还是通过手工执行truncate table sql 语句(在execute sql script 步骤)都可以达到目的(基于上面的1,2 特性)
如果你的ETL操作比较的多线程性,同一时间可能需要多个表结构一样并且里面都是为空的表(基于上面1,2,3特性),你可以创建一个 “字符串+序列” 的模式,每次需要的时候,就创建这样的表,用完之后就删除,因为你自己不一定知道你需要多少个这种类型的表,所以删除会比truncate 好一些。
下面举个例子怎么创建这种表:
你可以使用某种约定的表名比如department_temp 作为department 的临时表。或者
把argument 传到表名,使用 department_${argument} 的语法,
如果你需要多个这种表,使用一个sequence 操作+execute sql script 操作,execute sql script 就下面这种模式
Create table_? (…………..)
在表的名字上加参数,前面接受一个sequence 或类似的输入操作.
需要注意的是这种参数表名包括database table input 或者execute sql script ,只要是参数作为表名的情况前面的输入不能是从数据库来的,应为没有办法执行这种preparedStatement 语句,从数据库来的值后面的操作是 “值操作” ,而不是字符串替换,只有argument 或者sequence 操作当作参数才是字符串替换. (这一点官方FAQ也有提到)

热点内容
拆分视频需要哪些配置 发布:2024-10-09 04:06:39 浏览:911
安装电脑网络需要哪些配置 发布:2024-10-09 03:57:28 浏览:962
风云城服务器ip地址 发布:2024-10-09 03:53:18 浏览:634
c算法 发布:2024-10-09 03:53:10 浏览:119
androidstudio大小写忽略 发布:2024-10-09 03:53:10 浏览:569
苹果8p音效和安卓的音效哪个好 发布:2024-10-09 03:45:59 浏览:591
c语言动态分配空间 发布:2024-10-09 03:35:14 浏览:983
死歌脚本 发布:2024-10-09 03:11:55 浏览:86
企业内网搭建电影服务器侵权吗 发布:2024-10-09 03:07:14 浏览:107
python读取jpg 发布:2024-10-09 02:50:22 浏览:155