加快ETL转换-Pentaho Kettle

时间:2018-11-15 11:41:10

标签: database mongodb cassandra pentaho etl

对于一个项目,我必须处理许多传感器的时间序列数据。

我有一台工业机器会产生一些工件。对于每项工作(最多20分钟),传感器记录油压和温度,以及一些其他振动数据(非常高的频率)。所有这些时间序列都记录在一个.csv文件中,每个传感器和每个工作一个。每个文件都命名为:

yyyy_mm_dd_hh_mm_ss_sensorname.csv

,并且只包含一个实数序列。

我必须以某种方式存储此类数据。我正在基准测试许多解决方案,无论是关系型还是非关系型,例如MySQL,Cassandra,Mongo等。

特别是对于Cassandra和Mongo,我正在使用 Pentaho数据集成作为ETL工具。

我为两个数据库设计了一个通用方案(唯一列族/集合):

---------------------------------------
id | value | timestamp | sensor | order
---------------------------------------

问题是我被迫从文件名中提取时间戳和传感器信息,并且我必须进行许多转换以具有所需的格式。

这会减慢我的整个工作速度:对于MongoDB,上传单个工作(仅使用一个高频指标,总共3M行,或多或少)需要 3分钟, > 8分钟(卡桑德拉)。

我现在在一个节点上运行两个DB,目前有16 GB RAM和15 Core CPU。

我确定我做错了转换,所以问题是:我怎样才能加快速度?

这是我的KTR文件:https://imgur.com/a/UZu4kYv(没有足够的代表来发布图片)

1 个答案:

答案 0 :(得分:0)

不幸的是,您不能使用Additional output field选项卡上的文件名,因为该字段是并行填充的,并且有可能在计算中使用时未知。

但是,在您的情况下,您可以将文件名放在字段中,例如使用data grid,并将其用于时间戳和传感器的计算。同时,您可以对id,值和顺序进行所需的转换。完成后,将它们重新组合在一起。我在通用流程上添加了Unique Row,以防输入有错误,并有多个时间戳传感器。

enter image description here