如果我事先不知道查询,该如何为AWS Athena(Presto)划分数据?

时间:2019-06-17 15:46:45

标签: amazon-s3 presto amazon-athena data-lake

我需要查询大数据事件(TB),并且正在尝试对其进行正确分区。

我有一个客户,每个客户都有很多游戏。 问题在于我们查询的字段在某些情况下可能为空,因此它们不能用作分区(例如:segment)。

我考虑了两种策略:

  1. 划分依据:客户端/游戏/日期(S3)
  2. 每个客户端或游戏的表不同,并且仅按日期进行分区。     不同的水桶。

选项1很简单-我在where子句中进行过滤。 选项2,需要工会。

对此类数据进行分区的正确方法是什么? 正确的说,我的意思是最有效,最划算吗?

注意事项, 伊多

1 个答案:

答案 0 :(得分:0)

就描述大数据事件而言,这些事件是按照以下行为进行的: 多个客户端,每个客户端具有多个游戏,每个游戏具有多个事件,可以在Date上对其进行分区。

现在,对于不同的游戏,事件模式可能会有所不同,因此在查询时可能返回空值。不依赖于客户端。因此,对于不同的客户端和相同的游戏,事件架构应该相同。

因此,在客户端/游戏/日期和游戏/客户端/日期之间,最好使用游戏/客户端/日期进行分区,因为上述分区将更有用,因为在进行第一级分区之后,事件架构将是相同的。从查询的角度来看,没有游戏场分区的查询不会有什么区别,但是如果在查询中使用游戏分区场,则会提高效率。