Spark - Как бороться с обновлениями - PullRequest
0 голосов
/ 01 апреля 2020

У меня проблема с обновлением строк в озере данных. Давайте скажем, что у нас есть записи откуда-то. Эти записи должны быть записаны в HDFS / AzureBlobStorage / где угодно. Предположим, что наши записи имеют уникальный идентификатор. Допустим, мы уже написали несколько записей без дублированного идентификатора. Итак, у нас есть:

ID      |    name
1       |   Andrew
2       |   Bob
3       |   Alice

(это пример, поэтому я использовал только поле для обновления). Эти записи сохраняются в HDFS / AzureBlobStorage / где угодно. Теперь приходит новая запись:

ID=1  name=Mark

, что мы хотим сделать, это обновить эту запись. Возможно ли что-то подобное? Решение, которое приходит мне в голову, - это сохранить все записи с отметкой времени и использовать агрегирование в окне, упорядоченном по отметке времени (по убыванию) с сохранением первой строки.

Есть ли у вас какое-либо решение, которое заставило бы меня время только самая последняя строка? Я не думаю, что это возможно, но я не уверен.

1 Ответ

0 голосов
/ 01 апреля 2020

Обычно Apache Spark не поддерживает прямые обновления на RDD / фреймах данных и на базовом источнике данных, однако существуют 3-ий фреймворк, который позволяет это. Одним из них является delta.

Если вы хотите добиться этого с помощью искры, то один из подходов заключается в сохранении всех событий, которые изменяют данные, и ответе на текущее состояние при обработке всего журнала события.

...