2017-04-11 1 views
1

나는 불꽃에 아주 능숙하며 다음 문제에 접근하는 방법에 대한 조언을 듣고 싶습니다.스파크의 시계열 계산

나는 일년 내내 펼쳐지는 거래 일의 초 동안 양초 데이터 (높음, 낮음, 열림, 닫음)를 가지고 있습니다. 이는 약 360,000 개의 데이터 포인트를 나타냅니다.

내가 원하는 것은 해당 데이터 (및 모든 데이터 포인트)에 대해 시뮬레이션을 실행하고 주어진 데이터 포인트에 대해 이전 (또는 다음) x 데이터 포인트를 얻은 다음 일부 코드를 실행하는 것입니다. 그것을 통해 결과를 얻을 수 있습니다.

이상적으로 이것은 맵 스타일 함수에 있지만 Spark에서는 중첩 된 작업을 수행 할 수 없습니다. 필자가 생각하는 유일한 방법은 양초의 데이터 세트를 키로 만들고 관련 데이터를 표준화되지 않았거나 모든 키에 분할하는 것입니다. 비효율적 인 방법입니다.

이상 적으로 나는 (Candle, List) -> Double 또는 비슷한 것을 찾고 있습니다.

더 나은 접근 방법이 있다고 확신합니다.

저는 Spark 2.1.0을 사용 중이며 Yarn을 스케줄링 엔진으로 사용하고 있습니다.

답변

1

저는 스파크에서 시계열 처리 과정을 상당히 잘 수행했으며 정확히 동일한 문제에 대해 생각해 왔습니다.

불행히도, 내 의견으로는, 당신이 제안한대로 구조화하지 않고 원하는 방식으로 모든 데이터를 처리하는 좋은 방법이 없습니다. 우리가 Spark, pandas 또는 Postgres를 사용하든 상관없이 비싼 작업이라는 것을 받아 들여야한다고 생각합니다.

Spark SQL window functions (rangeBetween/RANGE BETWEEN 참조)을 사용하여 코드 복잡성을 숨길 수 있지만 수행중인 본질을 이스케이프 처리 할 수 ​​없습니다.

Protip : 데이터를 features-> label에 한 번 매핑하여 디스크에 기록하여 dev/testing을 더 빠르게 만들 수 있습니다!

+0

답변 해 주셔서 감사합니다. 올바르게 표시 할 수는 없지만 귀하의 이론적 근거를 이해하고 분석을 위해 데이터를 비정규 화하는 것을 구현했습니다. 이 논리가 효과가 없다는 것은 수치스러운 일이지만, 지금은 왜 그런지 이해합니다. –