hive—有没有一种方法可以在hdfs中合并orc文件而不使用alter table concatenate命令?

vulvrdjw  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(505)

这是我第一周与Hive和hdfs,所以请容忍我。
到目前为止,我看到的几乎所有合并多个兽人文件的方法都建议使用 ALTER TABLECONCATENATE 命令。
但是我需要合并同一个表的多个orc文件而不必 ALTER table。另一个选项是创建现有表的副本,然后使用 ALTER TABLE 这样我原来的table就不会变了。但我不能这么做,因为空间和数据冗余的原因。
我试图实现的目标(理想情况下)是:我需要将这些orc作为每个表的一个文件传输到云环境中。那么,有没有一种方法可以让我把移动中的兽人合并成云呢?这能在有/无条件下实现吗 Hive ,也许直接在 HDFS ?

aor9mmx1

aor9mmx11#

两种可能的方法 ALTER TABLE CONCATENATE :
尝试配置合并任务,请参见此处的详细信息:https://stackoverflow.com/a/45266244/2700344
或者,您可以强制单个减速器。这种方法非常适用于不太大的文件。您可以用order by覆盖同一个表,这将强制单个reducer在最后一个order by stage上执行。对于大文件,这将运行缓慢,甚至会失败,因为所有数据都将通过单个缩减器传递:

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

作为一个副作用,您将获得更好的打包orc文件,并对按顺序列出的列进行有效索引。

相关问题