hive-staging文件产生的原因和解决方案

Posted ucarinc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive-staging文件产生的原因和解决方案相关的知识,希望对你有一定的参考价值。

通过spark-sql、hive-sql、hue等提交select或者insert overwrite等sql到hive时,会产生该目录,用于临时存放执行结果,比如insert overwrite会将结果暂存到该目录下,待任务结束,将结果复制到hive表中。
关于该目录的生成位置策略可参考该文章:https://blog.csdn.net/zhoudetiankong/article/details/51800887,文章中提到了可修改该目录的生成位置,复述如下:
默认配置:
<property>
    <name>hive.exec.stagingdir</name>
    <value>.hive-staging</value>
</property>  

修改后:
    <property>
         <name>hive.exec.stagingdir</name>
         <value>/tmp/hive/.hive-staging</value>
    </property>

测试对hive生效,sparksql不起作用,应该是sparksql的bug:  https://issues.apache.org/jira/browse/SPARK-1837


两种情况下hive-staging文件不会自动删除:1、任务执行过程中出现异常 2、长时间保持连接或者会话。
所以修改hive.exec.stagingdir到一个特定的目录还是很有必要的,如果不输出到一个特定目录,而输出到表目录下面,很难检测到这些垃圾文件,可参考:
https://www.aboutyun.com//forum.php/?mod=viewthread&tid=20657&extra=page%3D1&page=1&

 

以上是关于hive-staging文件产生的原因和解决方案的主要内容,如果未能解决你的问题,请参考以下文章

如何解决rar文件解压缩失败

毕业设计JAVA文件压缩与解压缩实践(源代码+论文)

试述死锁产生的原因和解决办法

Hive/Spark小文件解决方案(企业级实战)

Buffer 类型产生的原因?主要用来解决什么问题?

内存溢出和内存泄漏的区别,产生原因以及解决方案