我有大约20TB的时间序列数据存储在大查询中。
我目前的管道是:
大查询中的原始数据=>加入大查询以创建更多大查询数据集=>将它们存放在水桶中
然后我下载了文件夹中的一部分文件:
使用Python / SFrame处理数据的插值/重采样,因为某些时间序列数据缺少时间且未均匀采样。
然而,在本地PC上需要很长时间,而且我猜测它需要数天才能完成20TB的数据。
由于数据已经存在于存储桶中,我想知道用于插值和重采样的最佳Google工具是什么?
重新采样和插值后,我可能会使用Facebook的Prophet或Auto ARIMA来创建一些预测。但那可以在当地完成。
Google的一些服务似乎是不错的选择。
Cloud DataFlow:我没有使用Apache Beam的经验,但看起来Apache API的Python API缺少与Java版本相比的功能?我知道如何编写Java,但是我想使用一种编程语言来完成这项任务。
Cloud DataProc:我知道如何编写PySpark,但我并不需要任何实时处理或流处理,但是spark有时间序列插值,所以这可能是唯一的选择吗?
Cloud Dataprep:看起来像是一个用于清理数据的GUI,但它处于测试阶段。不确定它是否可以进行时间序列重采样/插值。
有没有人知道哪个最适合我的用例?
由于
答案 0 :(得分:0)
我会在Dataproc上使用PySpark,因为Spark不仅仅是实时/流媒体,也适用于批量处理。
您可以选择群集的大小(并使用一些preemptibles来节省成本),并仅在实际需要处理此数据的时间运行此群集。然后杀死集群。
Spark也可以很好地使用Python(不像Scala那样好)但是对于所有效果和目的而言,主要区别在于性能,而不是降低API功能。
即使使用批处理,您也可以使用WindowSpec进行有效的时间插值
公平地说:我没有很多使用DataFlow或DataPrep的经验,但这是因为用例与你的用例有些相似而且Dataproc的效果很好
答案 1 :(得分:0)
Cloud Dataflow是批量数据处理,Cloud Dataproc是托管Spark和Hadoop服务,Cloud Dataprep用于转换/清理原始数据。所有这些都可用于执行数据的插值/重采样。
我会丢弃Cloud Dataprep。它可能会以向后兼容的方式发生变化,因为它处于测试阶段。 Cloud Dataflow和Cloud Dataproc之间的主要区别在于最后一个中的集群管理功能。如果您不希望通过管理群集来明确回归,则可以使用Cloud Dataflow以最简单的方式设置上述操作。
Apache Beam Java版本比Python版本旧,因为Apache Beam 1.X仅支持Java。新的2.X版本支持两种语言,没有明显的Python / Java差异。
如果您认为Dataflow是最适合的选项,您会在Java中发现这个Dataflow timeseries example很有用。