如何存储和分析来自数千个传感器的数据?

wz1wpwve  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(455)

我是新来的« 大数据 » 技术,尤其是Cassandra,所以我需要你的建议来完成我的任务。我一直在寻找有关处理时间序列的示例,以及关于此主题的不同讨论,但如果您认为我可能遗漏了一些内容,请随时告诉我。这是我的问题。
我需要存储和分析来自我们正在测试的大约100个传感器站的数据。在每个传感器站,我们有几千个传感器。因此,对于每个站,我们都会运行几个测试(大约10个,每个测试持续2小时30分),在测试期间,传感器每毫秒记录一次信息(可以是布尔值、整数或浮点值)。每次测试的记录在测试过程中都保存在工作站上,测试完成后再发给我。这意味着每个测试大约10gb(每个参数大约有1mb的信息)。
下面是一个说明层次结构的模式:层次结构描述
现在,我可以访问带有spark和cassandra的小型hadoop集群进行测试。我可能可以安装其他工具,但我真的很感激继续与Spark/Cassandra工作。
我的问题是:存储和分析来自这些传感器的信息的最佳数据模型是什么?
“分析”是指:
求某一特定站上某一特定传感器记录的某一特定参数的最小值、最大值、平均值;或者为一个特定的参数找到那些值,但是为所有的站;或者,当同一站的其他参数(一个或两个)高于某个极限时,为某个特定参数找到这些值
绘制一个或多个参数的演变曲线,以直观地比较它们(不同台站上的相同参数,或同一台站上的不同参数)
在参数或站之间做一些相关分析(例如,找出传感器是否不工作)。
我想把所有的信息放在一个cassandra表中,数据模型如下:

CREATE TABLE data_stations (
station text,           // station ID
test int,               // test ID
parameter text,         // name of recorded parameter/sensor
tps timestamp,          // timestamp
val float,              // measured value
PRIMARY KEY ((station, test, parameter), tps)
);

但是,我不知道一个表是否能够处理所有的数据:根据先前的数据模型(100个站x 10个测试x 10),快速计算给出10^14个不同的行 000个参数x 9000000毫秒(2h30毫秒)~=10^14),即使每个分区“只有”9000000行。
其他想法是将数据分成不同的表(例如,每个站一个表,或者每个测试站一个表,等等)。我不知道该怎么选,所以欢迎任何建议!
非常感谢您的时间和帮助,如果您需要更多的信息或细节,我很乐意告诉您更多。
皮亚尔

z9gpfhce

z9gpfhce1#

你走对了,Cassandra可以处理这些数据。您可以存储所有需要的数据,并使用apachesparkovercassandra进行所需的聚合。
我觉得apachespark适合您的用例,因为它可以用于聚合和计算相关性。
您还可以检查apachehive,因为它可以直接(通过外部表)在hdfs中处理/查询数据。
检查这些:
Cassandra-宽行的最大尺寸?
Cassandra的局限性

相关问题