我试图了解HIVE中ALTER TABLE CONCATENATE的工作原理。

我看到了这个链接How does Hive 'alter table <table name> concatenate' work?,但是我从该链接中得到的仅仅是ORC文件的合并发生在 strip 级别。

我正在寻找有关CONCATENATE如何工作的详细说明。例如,我最初在HDFS中有500个小的ORC文件。我运行了Hive ALTER TABLE CONCATENATE,文件合并为27个更大的文件。随后的CONCATENATE运行将文件数量减少到16,最后我最终得到了两个大文件。(使用Hive 0.12版本)所以我想了解

  • CONCATENATE的工作原理如何?它会查看现有文件数以及大小吗?串联后如何确定输出ORC文件的编号:
  • 使用Concatenate是否有任何已知问题?我们计划每天在维护窗口
  • 中运行一次连接
  • 是否使用CTAS进行串联连接,哪种更好?请注意,我的要求是在不影响Read
  • 性能的情况下减少ORC文件(通过Nifi摄取)的数量

    任何帮助表示赞赏,并在此先感谢

    最佳答案

    正如@leftjoin所评论的,确实可以为同一基础数据获取不同的输出文件。

    linked HCC thread中对此进行了更多讨论,但关键是:



    请注意,在正常情况下,拥有不同大小的文件应该不是问题。

    如果要简化过程,则根据数据量的大小,可能还需要在写入HDFS之前对其进行一点批处理。例如,通过在NiFi中设置批量大小。

    关于hadoop - HIVE中的ALTER TABLE命令中的CONCATENATE如何工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52170452/

    10-09 20:24