祝你新年快乐,万事如意!我们正在收集大量的GPS位置的分析目的,我们想存储和处理(2-3 3GB的每日数据)使用Heroku /亚马逊服务。我们正在寻找一个合适的解决方案。我们最初考虑的是这样一个系统,数据直接上传到亚马逊S3,一个工人Dyno不断尝试处理这些数据,并将GPS位置放到Heroku PostGIS数据库中,然后另一个工人Dyno将按需使用来动态计算分析输出。我们还听说了Amazon Elastic Map Reduce,它可以直接处理S3中的原始数据,而不需要PostGIS数据库。我们需要你的指导。对于这种存储和处理数据的需求(Heroku附加组件、架构等),您有什么建议?你对上面列出的两种选择有什么看法?
非常感谢
发布于 2014-01-04 23:15:15
很难给出一个准确的答案,因为您的处理细节并不清楚。您是否需要按用户分析、按地区分析、跨天分析等。
我可以给你介绍一些相关的服务:
Amazon Kinesis -针对此类用例(如物联网)的新服务。您可以将来自各种来源(包括直接来自移动设备)的读数放在服务器端进行读取。
亚马逊DynamoDB - NoSQL DB最近为其添加了一个地理空间库:http://www.allthingsdistributed.com/2013/09/dynamodb-geospatial.html http://aws.typepad.com/aws/2013/09/new-geo-library-for-dynamodb-.html
RDS with PostgreSQL - PostgreSQL非常适合地理信息系统的计算,并且使用关系数据库管理系统更容易管理,因为大多数数据库管理员工作都是必需的(安装、更新、备份、恢复等)。都是由RDS服务完成的。
S3 -存储用于批处理的数据的位置。请注意,对于大多数处理案例(如EMR ),最好使用较大的文件。您可以使用连接器从GitHub读取数据并将其存储到S3中(请参阅Kinesis示例:https://github.com/awslabs/amazon-kinesis-connectors/tree/master/src/main/java/com/amazonaws/services/kinesis/connectors/s3)
Amazon EMR -这是一种群集管理服务,可使Hadoop作业等运行作业变得更加容易。您可以在re:invent BDT201和video中找到有关使用电子病历进行地理空间分析的演示文稿
发布于 2014-01-05 10:00:38
您还应该考虑对数据进行预处理,以限制冗余记录的数量。你的大部分位置很可能都在同一个位置。换句话说,该设备将在大部分时间内处于静止状态。
一种方法是仅当新位置的速度大于0并且最后存储的位置也为0时才存储新位置。这样,在设备停止移动后,您只存储第一个位置。GPS的速度会有噪音,所以你不会摆脱每一个休息的位置。
另一种选择是仅当新位置与先前存储的位置有一定距离时才进行存储。
通过在请求的时间戳之前查找最接近的记录,您始终可以返回任何请求时间的结果。
如果您使用距离压缩,请考虑将所需距离设置为至少与GPS设备的预期均方根误差一样大,最小约为5米,如果您可以承受,请使用更长的距离。
计算地理位置之间的距离可能会耗费大量资源,因此需要预先计算后面的增量值,以便与输入位置一起使用,以加快计算速度。
发布于 2014-02-22 03:46:23
EMR推出了Kinesis连接器,因此可以使用Hadoop生态系统中熟悉的工具处理这样的数据集。你看到http://aws.typepad.com/aws/2014/02/process-streaming-data-with-kinesis-and-elastic-mapreduce.html了吗?
https://stackoverflow.com/questions/20902091
复制相似问题