Обновить данные вставки в улье через pyspark - PullRequest
0 голосов
/ 20 июня 2020

У меня есть данные, которые постоянно меняются в источнике. Я извлекаю эти данные через sq oop, но, поскольку объем велик, я не могу сохранить его как ежедневную усеченную нагрузку. Я хочу добавить данные, но logi c нужно обновить и вставить. Если запись обновляется в источнике путем удаления предыдущей той же записи, то же самое следует сделать в кусте, т.е. старую запись следует удалить, а новую следует вставить / обновить. Ниже приведен один из таких примеров.

enter image description here

After some time say 30 mins, the data is updated like this:

enter image description here

Now, my hive table picked up original record and after some time picked the updated record but inserted it as a different row.

введите описание изображения здесь

Я хочу, чтобы данные отображались так же, как и в исходном коде, без перезаписи моей таблицы. (Рекомендуется код Pyspark)

Пожалуйста, помогите. Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Вы можете добавить дополнительный столбец в свой источник как last_modified, а также в куст как last_load, и при следующей загрузке вы можете указать два условия (столбец id в источнике и столбец id в кусте) и (last_modified источника table и last_update столбца улья).

0 голосов
/ 20 июня 2020

Не запрашивает, но дает представление о том, как этого добиться: Создайте промежуточную таблицу между источником и фактической таблицей улья, которая будет содержать все записи (как вставки, так и обновления).

Чтобы получить фактическую таблицу улья, используйте функцию ранжирования, например:

rank() over (partition by id order by ingested_ts desc) as rnk
---
---
where rnk = 1

введите описание изображения здесь

Примечание. В зависимости от объемов данных таблица hive_staging может увеличиваться, поэтому вам необходимо соответственно добавить разделы / корзины.

...