Impala 表中的压缩

Posted

技术标签:

【中文标题】Impala 表中的压缩【英文标题】:Compaction in Impala Tables 【发布时间】:2020-06-29 20:58:04 【问题描述】:

我想了解 ,但找不到要研究的材料。 有哪些不同的技术,我可以在哪里找到相关材料进行研究。

【问题讨论】:

【参考方案1】:

compaction 的主要技术是避免使用small file problem,这取决于您的用例。

例如,您可能有一个将小文件写入HDFS 的进程,并且您希望像Impala table 一样查询这些文件。您可以为这些小文件设置一个staging table,并使用INSERT INTO TABLE base_table SELECT .....FROM stg_table 加载base table 以将小文件压缩成更大的文件。

另一个用例是partitioning。 使用分区时的一个主要风险是创建的分区会导致您遇到小文件问题。 发生这种情况时,对表进行分区实际上会降低查询性能 (与使用分区时的目标相反)因为它会导致创建太多小文件。 使用dynamic partitioning 时更有可能发生这种情况,但它仍然可以 发生在 static partitioning 上——例如,如果您向销售表添加了一个新分区 每天包含前一天的销售额, 而且每天的数据也不是特别大。

在选择分区时,您希望在太多分区之间取得平衡 (导致小文件问题)和太少的分区(提供性能的好处很少)。 分区列或列应具有合理数量的值 对于分区 - 但您应该认为合理的内容很难量化。

使用dynamic partitioning 特别危险,因为如果你不小心, 在具有太多不同值的列上进行分区很容易。 想象一个用例,您经常在其中查找属于 您将在查询中指定的时间范围。 您可能认为在与时间相关的列上进行分区是个好主意。 但是TIMESTAMP 列的时间可以达到纳秒,所以每一行都可以有一个唯一的值; 对于分区列来说,这将是一个糟糕的选择!甚至到分钟或小时都可以创造 分区太多,具体取决于数据的性质; 按较大的时间单位(如日、月甚至年)进行分区可能是更好的选择。

上面的阅读只是问题的介绍,用例更多,总的主题是性能和调优。

您可以从 Cloudera 文档开始。您可以点击此链接:

Tuning Impala for Performance

希望这会有所帮助。

【讨论】:

以上是关于Impala 表中的压缩的主要内容,如果未能解决你的问题,请参考以下文章

Impala 外部表读取未压缩文件但具有名称 (*.csv.gz)

Impala 中的表格压缩

简单计数查询超出 Impala 内存限制

如何查看 impala 表中的分区数

如何从impala中的表中删除列

在cm安装的大数据管理平台中集成impala之后读取hive表中的数据的设置(hue当中执行impala的数据查询)