gpt4 book ai didi

performance - Hive 压缩数据,按数据聚类,按数据排序

转载 作者:行者123 更新时间:2023-12-02 20:47:26 25 4
gpt4 key购买 nike

我有几个关于 Hive 性能的问题。

我在网上某处读到压缩数据(特别是 ORC,特别是 Snappy)会在读取数据方面带来更好的性能。
此外,如果我使用 order by 将我的数据加载到表中,它将导致 1 个大文件,这可能会降低读取可用性。
因此,实现与 order by 相同效果的另一种方法是使用 cluster by,它会创建多个小文件。

我对压缩数据进行了实验,按数据聚类并按数据排序以查看它们的性能。
目前,我有 5 个数据节点和 1 个名称节点。
加载到每个表中的数据文件约为 19GB+(200 万+条记录)

我使用以下查询创建了我的 orc snappy 压缩表:

CREATE EXTERNAL TABLE orc_t (....)
STORED AS ORC
LOCATION '...'
TBLPROPERTIES(orc.compress="SNAPPY")

当我看到每张 table 的表现时,我非常迷茫和困惑。
我运行的查询是:
SELECT * FROM orc_t WHERE date_format(st_time, 'yyyy-MM-dd') = '2017-05-20'
  • 压缩数据耗时 2m 45sec
  • 按数据聚类需要 43 秒
  • 按数据排序 43 秒

  • 似乎压缩数据花费的时间最长,并且按数据进行聚类似乎没有按数据排序的显着性能。

    难道是我的 5 个数据节点有足够的读取能力,以至于解压实际上会降低性能?
    还是我的样本数据不够大?
    我错过了什么吗?

    有哪位高手可以就上述问题给我指点一下吗?

    最佳答案

    Why multiple small data files (size of around 256MB) does not have significant performance over a single large data file (size of around 19GB+) when I perform the sample query (SELECT * FROM t WHERE date_format(st_time, 'yyyy-MM-dd') = '2017-05-20';



    您仍在扫描所有数据以查找数据中的单个值。因此必须全部解压。您还选择了所有列,因此使用 ORC 没有明显的好处。

    Shouldn't the multiple small data files have some performance edge over the single large data file?



    应该,但如果不是这种情况,则初始输入文件很可能能够适本地分 block 为 mapreduce 输入拆分,并且磁盘 IO 不是阻塞因素。

    Snappy 或 Zlib 压缩只是为您节省空间,而不是优化速度。

    如果您想提高速度,请将您的数据分区为您将经常使用的查询模式

    关于performance - Hive 压缩数据,按数据聚类,按数据排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47385944/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com