对于一个项目,我必须处理许多传感器的时间序列数据。
我有一台工业机器可以生产一些手工艺品。对于每项工作(最多20分钟),传感器记录油压和温度,以及一些其他振动数据(非常高的频率)。所有这些时间序列都记录在一个.csv文件中,每个传感器和每个工件各一个。每个文件的名称为:
yyyy_mm_dd_hh_mm_ss_sensorname.csv
只包含一个实数序列。
我必须以某种方式存储这种数据。我正在对许多解决方案进行基准测试,包括关系解决方案和非关系解决方案,比如mysql、cassandra、mongo等。
特别是对于cassandra和mongo,我使用pentaho数据集成作为etl工具。
我为这两个dbs设计了一个通用方案(唯一列系列/集合):
---------------------------------------
id | value | timestamp | sensor | order
---------------------------------------
问题是我被迫从文件名中提取时间戳和传感器信息,并且我必须应用许多转换来获得所需的格式。
这减慢了我整个工作的速度:mongodb需要3分钟,cassandra需要8分钟上传一个作品(只有一个高频指标,总共有300万行,或多或少)。
我在一个节点上运行这两个数据库(目前),有16gbram和15核cpu。
我确信我做的转换是错误的,所以问题是:我怎样才能加快速度??
这是我的ktr文件:https://imgur.com/a/uzu4kyv (没有足够的代表发布图像)
1条答案
按热度按时间zi8p0yeb1#
不幸的是,您不能使用
Additional output field
选项卡,因为此字段是并行填充的,并且在计算中使用它时可能不知道。但是,在您的示例中,可以将文件名放在字段中,例如
data grid
,并将其用于时间戳和传感器的计算。同时,对id、值和顺序进行所需的转换。完成后你又把它们放在一起了。我加了一个Unique Row
在公共流中,为了防止输入有错误并且有多个时间戳,传感器。