配置单元更改表连接命令存在风险



我一直在使用tez引擎来运行map reduce作业。我有一个MR工作,它需要很长时间才能运行,因为我注意到我有超过20k个文件,每个文件有一个条纹,而tez并没有根据文件数量而不是条纹数量来均匀分布映射器。我可以有一堆有1个文件但有很多条纹的映射器,还有一些映射器处理15k个文件,但条纹数量与另一个相同。

作为一个变通测试,我使用了ALTER TALE table PARTITION (...) CONCATENATE,以便将要处理的文件数量减少到每个文件分布更均匀的条带中,现在映射作业运行得非常好。

我担心的是,我在文档中没有发现运行此命令和丢失数据是否有任何风险,因为它适用于相同的文件。

我试图评估在MR作业之前使用concatenate来减少文件量是否比使用bucketing更好,后者读取文件并将bucketing输出放到单独的位置。在失败的情况下,我不会丢失源数据。

连接每个分区需要1分钟,而分段需要更多的时间,但不会有丢失源数据的风险。

我的问题是:运行concatenate命令时是否存在数据丢失的风险?

谢谢!

它应该和从查询重写表一样安全。它使用相同的机制:结果首先在暂存中准备,然后转移到表或分区位置。

连接作为一个单独的MR作业,在暂存目录中准备连接的文件,并且只有在所有操作都没有错误的情况下,才将它们移动到表位置。你会在日志中看到这样的东西:

INFO  : Loading data to table dbname.tblName partition (bla bla) from /apps/hive/warehouse/dbname.db/tblName/bla bla partition path/.hive-staging_hive_2018-08-16_21-28-01_294_168641035365555493-149145/-ext-10000

最新更新