Google Cloud - 用于时间序列数据清理的产品是什么?

时间:2018-04-13 03:56:25

标签: python apache-spark google-cloud-platform google-cloud-dataflow google-cloud-dataproc

我有大约20TB的时间序列数据存储在大查询中。

我目前的管道是:

大查询中的原始数据=>加入大查询以创建更多大查询数据集=>将它们存放在水桶中

然后我下载了文件夹中的一部分文件:

使用Python / SFrame处理数据的插值/重采样,因为某些时间序列数据缺少时间且未均匀采样。

然而,在本地PC上需要很长时间,而且我猜测它需要数天才能完成20TB的数据。

由于数据已经存在于存储桶中,我想知道用于插值和重采样的最佳Google工具是什么?

重新采样和插值后,我可能会使用Facebook的Prophet或Auto ARIMA来创建一些预测。但那可以在当地完成。

Google的一些服务似乎是不错的选择。

  1. Cloud DataFlow:我没有使用Apache Beam的经验,但看起来Apache API的Python API缺少与Java版本相比的功能?我知道如何编写Java,但是我想使用一种编程语言来完成这项任务。

  2. Cloud DataProc:我知道如何编写PySpark,但我并不需要任何实时处理或流处理,但是spark有时间序列插值,所以这可能是唯一的选择吗?

  3. Cloud Dataprep:看起来像是一个用于清理数据的GUI,但它处于测试阶段。不确定它是否可以进行时间序列重采样/插值。

  4. 有没有人知道哪个最适合我的用例?

    由于

2 个答案:

答案 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 DataflowCloud Dataproc之间的主要区别在于最后一个中的集群管理功能。如果您不希望通过管理群集来明确回归,则可以使用Cloud Dataflow以最简单的方式设置上述操作。

Apache Beam Java版本比Python版本旧,因为Apache Beam 1.X仅支持Java。新的2.X版本支持两种语言,没有明显的Python / Java差异。

如果您认为Dataflow是最适合的选项,您会在Java中发现这个Dataflow timeseries example很有用。