当前位置: 首页 > 知识库问答 >
问题:

如何将分区配置单元ORC表中的多个ORC文件(属于每个分区)组合成单个大ORC文件

方璞
2023-03-14

我在Hive有一个分区的兽人表。加载所有可能的分区后,我在HDFS上得到多个ORC文件,即HDFS上的每个分区目录中都有一个ORC文件。我需要将每个分区下的所有这些ORC文件组合成一个大的ORC文件,用于某些用例。

有人能给我建议一个方法,把这些多个ORC文件(属于每个分区)组合成一个单一的大ORC文件。

我试着从分区表创建一个新的非分区ORC表。它确实减少了文件的数量,但不会减少到单个文件。

ps:从另一个表中创建一个表完全是一个映射任务,因此使用属性“set mapred.reduce.tasks=1;”将还原器的数量设置为1于事无补。

谢谢

共有1个答案

郭永怡
2023-03-14

您可以使用concatenate命令组合小orc文件。这可以在表和分区级别上完成:语法根据orc文档:

用户可以通过在其表或分区上发出CONCATENATE命令来请求将小型ORC文件合并在一起。这些文件将在条带级别上合并,而不进行保留。

ALTER TABLE istari [PARTITION partition_spec] CONCATENATE;
 类似资料:
  • 我已经从Map R集群复制了所有orc文件,并遵循了相同的文件夹结构 创建了位置为#1的orc格式表 然后执行此命令“msck REPAIR TABLE<>” 上面的步骤通过时没有出错,但当我查询分区时,作业失败,出现以下错误 有人能告诉我,我们可以直接从ORC文件创建配置单元ORC分区表吗? 我的存储是蔚蓝数据湖。

  • 解决这个问题的最佳方法是什么?

  • 我有一些困难,以确保我利用已排序的数据在一个配置单元表。(使用ORC文件格式) 我知道我们可以通过在create DDL中声明子句来影响数据从配置单元表中读取的方式。 这意味着每次查询该表时,数据将通过在各个映射器之间分发,然后对其进行排序。 我的问题是: 我不希望数据被拆分为文件(桶),因为卷不是那么多,我会保留小文件。 但是,我确实想利用排序插入。 我真的需要在create DLL语句中使用吗

  • 我有一个ACID hive表,里面有ORC格式的文件。尝试压缩时,出现以下错误:完整错误如下: 这个表是通过将avro文件创建和更新到一个orc表中的,因此产生了一组delta,和。 我有很多其他这样的表格,它们没有这个问题。这个表没有什么特别之处,实际上非常小(<100k行,磁盘上有2.5M),并且在上个月更新了100次(更新了20k行,更新了5M数据)。DDL为: 这每隔几个月就会发生一次。由

  • 问题内容: SO和Web上的大多数问题/答案都讨论了如何使用Hive将一堆小的ORC文件组合成一个更大的文件,但是,我的ORC文件是日志文件,每天都分开,因此我需要将它们分开。我只想每天“汇总” ORC文件(它们是HDFS中的目录)。 我最有可能需要用Java编写解决方案,并且遇到过OrcFileMergeOperator,这可能是我需要使用的内容,但还为时过早。 解决此问题的最佳方法是什么? 问