分享

关于sparksql on yarn生成大量.hive-staging文件问题

使用spark-sql on yarn 跑sql 程序,在hdfs 下生成了大量的.hive-staging文件,
spark-sql --master yarn --deploy-mode client --conf spark.shuffle.service.enabled=true --conf spark.dynamicAllocation.enabled=true -f /auto_cron/cron-running/bidw/st02/flow_guide/bidw-sql-st-st02_eqt_flow_contrb_stats_day.sql -d day1="${day1}" -d day4="${day4}"
根据网上的配置,在hive-site.xml中添加如下配置
请问大家,有什么办法可以消除.hive-staging文件?
QQ截图20161226113329.png

已有(4)人评论

跳转到指定楼层
nextuser 发表于 2016-12-26 14:25:41
本帖最后由 nextuser 于 2016-12-26 14:27 编辑

有两个办法
hive也会产生.staging_hive,但是hive产生后会被移除,而spark-sql不会移除,所以我们需要手动处理这种情况。

1.在hive-site.xml中添加如下属性,所有的.staging-hive*文件都产生到/tmp/staging/目录下了。在cm的hive配置中,这一部分的配置需要加在“hive-site.xml 的 Hive 客户端高级配置代码段(安全阀)”这一项中,因为这一部分的配置是生效在hive的客户端中,加在服务器端是没用的,不生效。.hive-staging只是产生文件的前缀,不是目录。
[mw_shl_code=xml,true]<property>
<name>hive.exec.stagingdir</name>
<value>/tmp/staging/.hive-staging</value>
</property>[/mw_shl_code]

2.写shell脚本,定时去/tmp/hive/staging/.staging目录下清除文件,注意,清除文件一定要清除昨天的,今天产生的有可能正好在用,如果被移除了,则会报错,调试的时候碰到过这种情况。


来自cjun1990
回复

使用道具 举报

sunt99 发表于 2016-12-26 16:06:55
nextuser 发表于 2016-12-26 14:25
有两个办法
hive也会产生.staging_hive,但是hive产生后会被移除,而spark-sql不会移除,所以我们需要手动 ...

你好,我就是按照你所说的配置的,可是在相应的目录下仍然有.hive-staging文件,而/tmp/hive/staging/.staging下为空,问一下/tmp/hive/staging/.staging是hdfs上的目录吧?
回复

使用道具 举报

nextuser 发表于 2016-12-26 20:02:26
本帖最后由 nextuser 于 2016-12-26 20:04 编辑
sunt99 发表于 2016-12-26 16:06
你好,我就是按照你所说的配置的,可是在相应的目录下仍然有.hive-staging文件,而/tmp/hive/staging/.st ...

把.staging-hive*文件产生的目录,配置到/tmp/staging/目录下
哪个目录产生了.staging-hive*文件,也可以用shell定时删除掉



回复

使用道具 举报

为梦狂野 发表于 2017-8-9 16:07:10
sunt99 发表于 2016-12-26 16:06
你好,我就是按照你所说的配置的,可是在相应的目录下仍然有.hive-staging文件,而/tmp/hive/staging/.st ...

staging文件肯定是在hdfs上的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条