gpt4 book ai didi

hive - 有没有办法在不使用 ALTER TABLE CONCATENATE 命令的情况下在 HDFS 中合并 ORC 文件?

转载 作者:行者123 更新时间:2023-12-04 17:35:54 27 4
gpt4 key购买 nike

这是我使用 Hive 和 HDFS 的第一周,所以请多多包涵。

到目前为止,我看到的几乎所有合并多个 ORC 文件的方法都建议使用 ALTER TABLECONCATENATE 命令。

但我需要合并同一个表的多个 ORC 文件,而不必ALTER 表。另一种选择是创建现有表的副本,然后对其使用 ALTER TABLE,以便我的原始表保持不变。但由于空间和数据冗余的原因,我不能那样做。

我想要实现的(理想情况下)是:我需要将这些 ORC 作为每个表的一个文件传输到云环境中。那么,有没有一种方法可以在将 ORC 传输到云端的过程中随时随地合并这些 ORC?这是否可以使用/不使用 Hive 来实现,也许直接在 HDFS 中实现?

最佳答案

ALTER TABLE CONCATENATE 以外的两种可能的方法:

  1. 尝试配置合并任务,详见此处:https://stackoverflow.com/a/45266244/2700344

  2. 或者,您可以强制使用单个 reducer 。这种方法对于不太大的文件比较适用。您可以用 ORDER BY 覆盖同一个表,这将在最后一个 ORDER BY 阶段强制使用单个 reducer。这对于大文件会很慢甚至失败,因为所有数据都将通过单个 reducer 传递:

    INSERT OVERWRITE TABLE
SELECT * FROM TABLE
ORDER BY some_col; --this will force single reducer

作为副作用,您将获得更好的打包 ORC 文件,并在按顺序列出的列上使用高效索引。

关于hive - 有没有办法在不使用 ALTER TABLE CONCATENATE 命令的情况下在 HDFS 中合并 ORC 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56593175/

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