【发布时间】:2023-03-30 04:48:01
【问题描述】:
我正在尝试构建一个可以摄取、存储和查询应用事件数据的系统。将来它将用于其他任务(ML、分析等),因此我认为 Databricks 可能是一个不错的选择(目前)。
主要用例是检索应用中发生的用户操作事件。 大约每 5 到 30 分钟会有一批此类事件数据进入 S3 存储桶,Databricks Auto Loader 会提取它们并将其存储在 Delta 表中。
一个典型的查询是:获取过去一天、一周或一个月内 colA = x 的所有事件。
我认为这里的典型策略是按日期分区。例如:
date_trunc("day", date) # 2020-04-11T00:00:00:00.000+000
这将在一年内创建 365 个分区。我希望每个分区能容纳大约 1GB 的数据。除了分区之外,我还计划对 where 子句中经常使用的高基数列之一使用 z 排序。
这是不是分区太多了? 有没有更好的方法来分区这些数据? 由于我按天进行分区并且数据每 5-30 分钟输入一次,是否可以只将数据“附加”到天分区?
【问题讨论】:
标签: apache-spark databricks partitioning delta-lake