具有 < 或 > 条件的 impala 分区

Posted

技术标签:

【中文标题】具有 < 或 > 条件的 impala 分区【英文标题】:impala partitions with < or > conditions 【发布时间】:2016-04-07 16:31:30 【问题描述】:

我有 2TB 的手机记录,大约 180 万用户的 330 亿次读数。 我在用户 ID 上创建了一个分区。 Impala 创建了许多名为userid=XXXXX 的子目录。 这似乎超过了 180 万个子目录的分区。有没有办法让分区具有范围或数字数组?

【问题讨论】:

【参考方案1】:

目前 Impala 没有任何类型的范围分区。因此,您将需要在表中创建更少分区的不同列上进行分区。或者作为一种解决方法,您可以向表中添加一个附加列,该列存储您想要为每条记录指定的范围,然后在“范围”列上进行分区。示例:您有一个字段为 user_id=1234 的记录,然后该字段也将包含一个范围为 user_range=0_100000 的字段,您可以将其用于分区。

【讨论】:

以上是关于具有 < 或 > 条件的 impala 分区的主要内容,如果未能解决你的问题,请参考以下文章

查询具有多个状态条件的id

如何在 impala 或 hive 上读取复杂类型数组<string>?

在 Impala 中使用字符串或数组检查子集

SQL/Impala:将多个查询(具有不同的 where 子句)合并为一个

使用 random() 或 tablesample system() 在 impala 中随机采样 n 行

Apache Zeppelin 条件分支(IF/ELSE)?