【发布时间】:2016-12-31 08:23:44
【问题描述】:
我对“大数据”技术非常陌生,尤其是 Cassandra,因此对于我必须完成的任务,我需要您的建议。我一直在寻找有关处理时间序列的 Datastax 示例,以及关于此主题的不同讨论,但如果您认为我可能遗漏了什么,请随时告诉我。 这是我的问题。
我需要存储和分析来自我们正在测试的大约 100 个传感器站的数据。在每个传感器站中,我们有数千个传感器。因此,对于每个站点,我们运行多个测试(大约 10 个,每个持续大约 2 小时 30 分钟),在此期间传感器每毫秒记录一次信息(可以是布尔值、整数或浮点数)。每次测试的记录在测试期间都保存在工作站上,然后在测试完成后发送给我。这意味着每个测试大约 10 GB(每个参数大约是 1 MB 信息)。
这是一个说明层次结构的架构: Hierarchy description
现在,我可以访问一个带有 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 000 个参数 x 9,000,000 毫秒)快速计算得出 10^14 个不同的行(2h30 以毫秒为单位)~= 10^14),即使每个分区“仅”有 9,000,000 行。
其他想法是将数据拆分到不同的表中(例如,每个站点一个表,或每个站点每个测试一个表等)。我不知道如何选择,所以欢迎任何建议!
非常感谢您的时间和帮助,如果您需要更多信息或详细信息,我很乐意告诉您更多信息。
皮亚尔
【问题讨论】:
标签: hadoop cassandra data-modeling sensors