这是我第一周与Hive和hdfs,所以请容忍我。
到目前为止,我看到的几乎所有合并多个兽人文件的方法都建议使用 ALTER TABLE
与 CONCATENATE
命令。
但是我需要合并同一个表的多个orc文件而不必 ALTER
table。另一个选项是创建现有表的副本,然后使用 ALTER TABLE
这样我原来的table就不会变了。但我不能这么做,因为空间和数据冗余的原因。
我试图实现的目标(理想情况下)是:我需要将这些orc作为每个表的一个文件传输到云环境中。那么,有没有一种方法可以让我把移动中的兽人合并成云呢?这能在有/无条件下实现吗 Hive
,也许直接在 HDFS
?
1条答案
按热度按时间aor9mmx11#
两种可能的方法
ALTER TABLE CONCATENATE
:尝试配置合并任务,请参见此处的详细信息:https://stackoverflow.com/a/45266244/2700344
或者,您可以强制单个减速器。这种方法非常适用于不太大的文件。您可以用order by覆盖同一个表,这将强制单个reducer在最后一个order by stage上执行。对于大文件,这将运行缓慢,甚至会失败,因为所有数据都将通过单个缩减器传递:
作为一个副作用,您将获得更好的打包orc文件,并对按顺序列出的列进行有效索引。