Я пытаюсь хранить более 200 000 переменных временных рядов в кадре данных Spark, и я хочу, чтобы даты для каждого временного ряда совпадали с набором первичных ключей всех дней между 1-1-1930 и 1-1-2017. Конечной целью является создание байесовской модели, которая использует множество временных рядов в качестве предикторов для определенного временного ряда. Я прочитал временный ряд XML в искровом Dataframe, который выглядит следующим образом:Хранение большого количества данных временных рядов в Scala Dataframe с общим ключом
+---------------------+----------------------+
|timeSeries1_date |timeSeries1_value |
+---------------------+----------------------+
| 1997-01-01| 10.49|
| 1997-01-02| 15.64|
| 1997-01-03| 53.06|
| ....| ....|
+---------------------+----------------------+
Прямо сейчас я пытаюсь сделать полную внешнее объединение, чтобы добавить каждый дополнительный временный ряд с общим набором временных рядов:
allSeries = allSeries.join(series, allSeries.col("date") === newSeries.col("timeSeries2_date"), "outer")
allSeries = allSeries.drop("timeSeries2_date")
Результат выглядит следующим образом:
+---------------------+----------------------+----------------------+
|date |timeSeries1_value |timeSeries2_value |
+---------------------+----------------------+----------------------+
| 1997-01-01| 10.49| 11.93|
| 1997-01-02| 15.64| null|
| 1997-01-03| 53.06| 43.04|
| ....| ....| ....|
+---------------------+----------------------+----------------------+
Это присоединиться становится крайне медленно до точки она является непригодным для использования. Мой опыт в основном связан с реляционными базами данных, поэтому у меня возникают проблемы с пониманием того, какой правильный подход будет для этой ситуации. Нужно ли мне даже объединять эти данные в один и тот же Dataframe? Есть ли более эффективный способ сделать это?
Спасибо за понимание! Я работаю с довольно чистым набором данных, который содержит только одно значение в день, месяц или год. Моя цель - построить байесовскую модель временных рядов, которая моделирует влияние многих временных рядов индикаторов на один конкретный временной ряд. Я не ищу найти среднее значение или рассчитать любые значения из одного временного ряда. Вы говорите, что я могу сохранить каждый временной ряд в отдельный фрейм данных и каким-то образом объединить его в какой-то фрейм данных? – jskracht
Я использовал «mean» в качестве примера. Вы можете использовать 'UDAF' с помощью какого-либо пользовательского метода' оценки'. Можете ли вы дать (упрощенный) пример того, какой анализ вы выполняете с рамкой выходных данных? То есть что вы делаете с совпадением 'timeSeries1_value' и' timeSeries2_value'? –
Я использую этот инструмент https://google.github.io/CausalImpact/CausalImpact.html в R и ожидает, что все данные будут в формате матричного типа, как я пытался достичь выше. Мне не нужно точно следовать этому шаблону, но мне нужно убедиться, что я могу выстраивать в разные сроки различные даты из каждого временного ряда, чтобы я мог их соотнести. – jskracht