2017-04-11 54 views
1

我非常喜欢点火,并且想要就如何解决以下问题提供建议。火花中的时间序列计算

我的蜡烛数据(高,低,开,关)在一年中的一个交易日的每一分钟。这代表大约360,000个数据点。

我想要做的是在数据(可能每个数据点)上运行一些模拟,我想要给定的数据点,获取以前(或下一个)x个数据点,然后运行一些代码横跨那个给结果。

理想情况下,这将是一个映射样式函数,但不能在Spark中执行嵌套操作。我可以考虑的唯一方法就是创建一个Candle的DataSet作为关键字,并将相关数据进行非标准化或将其分配到每个关键字上 - 无论哪种方式似乎效率都不高。

理想情况下,我正在寻找的东西(蜡烛,列表) - >双或类似的东西。

我相信有更好的方法。

我正在使用Spark 2.1.0并使用Yarn作为调度引擎。

回答

1

我在Spark中做了一些时间序列处理,花了一些时间思考完全相同的问题。

不幸的是,在我看来,没有很好的方式来处理所有的数据,而不需要按照您的建议进行构建。我认为我们不得不接受,这是一个昂贵的操作,无论我们使用的是Spark,熊猫还是Postgres。

您可以使用Spark SQL window functions(查看rangeBetween/RANGE BETWEEN)隐藏代码的复杂性,但是您所做的事情的本质是无法逃避的。

Protip:将数据映射到features->标签一次并将其写入磁盘以使开发/测试更快!

+0

谢谢你的回答,虽然我不能标记正确,但我理解你的理论基础,并且已经实施了一些可以使数据无法正常分析的内容。这种逻辑不起作用是令人遗憾的,但我现在明白为什么它是这种情况。 –