【问题标题】:Is there a way to merge ORC files in HDFS without using ALTER TABLE CONCATENATE command?有没有办法在不使用 ALTER TABLE CONCATENATE 命令的情况下合并 HDFS 中的 ORC 文件?
【发布时间】:2019-10-28 19:06:40
【问题描述】:

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

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

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

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

【问题讨论】:

标签: hive hdfs orc


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2020-09-12
    • 2021-08-12
    • 2020-04-24
    相关资源
    最近更新 更多