Я пытаюсь создать систему, которая принимает, хранит и может запрашивать данные о событиях приложения. В будущем он будет использоваться для других задач (машинное обучение, аналитика и т. Д.), Поэтому я думаю, что Databricks может быть хорошим вариантом (на данный момент).
Основным вариантом использования будет получение событий действий пользователя, происходящих в приложении. Пакеты данных этого события будут попадать в корзину S3 примерно каждые 5-30 минут, и Databricks Auto Loader забирает их и сохраняет в дельта-таблице.
Типичный запрос: получить все события, где colA = x, за последний день, неделю или месяц.
Я думаю, что типичной стратегией здесь является разделение по дате. например:
date_trunc("day", date) # 2020-04-11T00:00:00:00.000+000
Это создаст 365 разделов за год. Я ожидаю, что каждый раздел будет содержать около 1 ГБ данных. В дополнение к секционированию я планирую использовать z-упорядочение для одного из столбцов с высокой мощностью, который будет часто использоваться в предложении where.
Это слишком много разделов? Есть ли лучший способ разделить эти данные? Поскольку я делю разделы по дням, а данные поступают каждые 5-30 минут, можно ли вместо этого просто добавить данные в раздел дней?