【问题标题】:Can I use opentsdb database for vehicle gps data?我可以将 opentsdb 数据库用于车辆 gps 数据吗?
【发布时间】:2015-12-22 05:27:45
【问题描述】:

我无法确定是否可以使用 opentsdb 存储车辆 gps 数据 例如。车辆ID、时间戳、纬度、经度

opentsdb 是否适合这个,或者我应该使用 Hbase。我已经看到很多使用 hbase 获取 gps 数据的示例,例如。 hortonworks 示例。但我还没有看到一个使用 opentsdb 获取 gps 数据的示例。

我的问题是,如果我们可以使用 opentsdb 来获取 gps 数据,那么它的表设计会是什么?

【问题讨论】:

    标签: hadoop gps hbase hortonworks-data-platform opentsdb


    【解决方案1】:

    OpenTSDB 用于分析数据,在您的情况下是这样的;位置、时间戳、在该位置看到的汽车数量。对于一辆车,我认为你应该使用 hbase,vehicleid 作为 rowkey(如果 id 不是连续的),hbase 中的一个单元格已经有时间戳,而 lat 作为列键,long。作为列数据。或者您可以将 lat 和 long 放入列键,而不向列值写入任何内容。或者,如果您想要获取特定车辆的最后 10 个位置的查询,您可以将列键设为 (Long.MAX_VALUE - 时间戳),这样它们就会被排序,当您选择一行时(车辆 ID),您可以获得扫描结果中的前 10 个结果,然后关闭结果对象。

    如果您有任何其他问题,请告诉我。


    编辑:回答下面的cmets;

    那么,你可以这样存储数据,

    • rowkey: vehicleid+yyyyMMdd ,(同一行一天车辆的所有信息),
    • 列键;(Long.MAX_VALUE - 时间戳)为数据时间,
    • 列数据:特殊格式的所有信息,我的意思是protobuf对象或类似的东西,它将存储为字节数组,并且可以通过protobuf轻松地将byte[]自动转换为对象,反之亦然。

    OR对于列数据,你可以试试这种方式,

    • 列键:(Long.MAX_VALUE - 时间戳)+loc、(Long.MAX_VALUE - 时间戳)+速度等。
    • 列数据:lat、long 表示 loc、整数表示速度、角度等。

    这种行键结构让您可以轻松有序地获取最后一个数据点,列数据结构不是那么重要,取决于您要如何编写代码。

    【讨论】:

    • 假设我收到了来自数千辆汽车的位置数据。在我的情况下,时间戳也与 lat 和 long 一起出现在数据包中。现在我需要存储来自不同车辆的所有数据。在这种情况下,您给出的设计会改变(即我还会使用 hbase 吗?或 OpenTSDB)。我们拥有的数据不就是时间序列数据吗?
    • 我忘了提到我得到的其他传感器参数,例如车速、转弯角度等。这些参数会改变架构的设计吗?
    • 是的,速度和其他数据可以改变您的数据设计。 Hbase 适合在数百万辆汽车中查找一辆车的数据,这不是问题。我认为这取决于您想如何从 hbase 读取数据,我的意思是,您是否想分别获取速度、位置、角度等数据,例如绘制速度图表。或者由于您的数据是打包的,并且您可能希望在地图或其他东西上显示车辆的所有信息,并且每个时间戳都可以是地图上的一个点,当用户单击一个点时,您会同时显示速度、位置、角度等。
    • 是的,我需要获取车辆的所有信息。例如。我们将有如下查询: 1. 车辆的最后 20 个位置是什么? 2. 在任何给定日期时间车辆的速度或其他信息是什么? 3. 车辆在给定时间 t1 和 t2 之间如何行驶?
    • 感谢您的回答。还有一个问题,我可以像这样对蜂巢进行查询-过去 2 天车辆停在哪里?它在最后一天开了多少英里等等等等。
    猜你喜欢
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 2017-12-05
    • 2021-11-05
    • 2021-06-14
    • 2013-05-28
    相关资源
    最近更新 更多