2017-04-11 72 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

謝謝你的回答,雖然我不能標記正確,但我理解你的理論基礎,並且已經實施了一些可以使數據無法正常分析的內容。這種邏輯不起作用是令人遺憾的,但我現在明白爲什麼它是這種情況。 –