cloudera - Impala 表中的压缩

标签 cloudera impala

我想了解 Impala 表中的压缩,但找不到要研究的 Material 。
什么是不同的技术以及我可以在哪里找到 Material 来研究它。

最佳答案

compaction的主要技术是为了避免small file problem这取决于您的用例。
例如,您可能有一个正在将小文件写入 HDFS 的进程。并且您想查询这些文件,例如 Impala table .你可以有一个 staging table为这些小文件加载 base table使用 INSERT INTO TABLE base_table SELECT .....FROM stg_table将小文件压缩成更大的文件。
另一个用例是 partitioning .
使用分区时的一个主要风险是创建导致您陷入小文件问题的分区。
发生这种情况时,对表进行分区实际上会降低查询性能
(与使用分区时的目标相反)因为它会导致创建过多的小文件。
这在使用 dynamic partitioning 时更有可能,但它仍然可以
发生在 static partitioning — 例如,如果您向销售表添加了一个新分区
每天包含前一天的销售额,
而且每天的数据都不是特别大。
在选择分区时,您希望在过多的分区之间取得一个愉快的平衡
(导致小文件问题)和太少的分区(对性能几乎没有好处)。
分区列或列应具有合理数量的值
对于分区——但你应该认为合理的东西很难量化。
使用 dynamic partitioning特别危险 因为如果你不小心
很容易在具有太多不同值的列上进行分区。
想象一个用例,您经常寻找属于
您将在查询中指定的时间范围。
您可能认为在与时间相关的列上进行分区是个好主意。
但是一个TIMESTAMP column 可以有到纳秒的时间,所以每一行都可以有一个唯一的值;
对于分区列来说,这将是一个糟糕的选择!甚至到分钟或小时都可以创造
太多的分区,取决于您的数据的性质;
按较大的时间单位(如日、月甚至年)进行分区可能是更好的选择。
上面的阅读只是对问题的介绍,还有更多用例,一般主题是性能和调优。
您可以从 Cloudera 文档开始。你可以点击这个链接:
Tuning Impala for Performance
希望这可以帮助。

关于cloudera - Impala 表中的压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62646565/

相关文章:

hadoop hdfs 指向文件 :///not hdfs://

java - 历史服务器未在 cloudera Hadoop 上启动

python - 获取详细的 Impyla 错误消息

hadoop - Impala 可以从表中执行 COUNT(*) 但不能执行 SELECT *

java - Hadoop 中的 Mapper 输出保存在哪里?

java - 无法从 Eclipse 建立到 Hive 的 JDBC 连接

java - 使用java向impala表中插入数据

hadoop - 使用 Impala 访问 Hbase 表时,所有 SQL 操作是否都有效?

sql - Hive中的时间戳操作

hadoop - 如何将DataNode添加到Cloudera hadoop