java生成excel文件到指定目录_05566.1.0Hive On Spark修改作业临时配置文件生成目录...

作者:李继武

1

文档编写目的

在Hive On Spark的模式下,无论是通过Beeline还是hive CLI访问Hive,使用Spark引擎执行SQL语句时,都会在/tmp目录下生成一个spark_submit.*.properties文件。Hive CLI方式会在当前节点/tmp目录生成,使用Beeline方式则会在HiveServer2所在节点的/tmp目录下生成。

c146642c614633fc3262be6e5c535dd3.png

一般情况下spark-submit.xxx.properties文件生成在/tmp目录下并没有问题,该文件主要是用向集群提交Spark作业时指定作业的运行参数。

39f3b9c7298e59382bad657d755e7dcf.png

但在一些场景中,由于各种原因不允许往/tmp目录写入文件时,就需要修改生成该文件的目录,本文档主要介绍如何修改该目录。

  • 测试环境:CDH6.1.0

2

控制台配置

尝试通过控制台在hive或者spark组件的配置中进行修改

1.查看hive组件,搜索/tmp

dcbcd43765d14cd3091abda9f899bd35.png

从图上可以得知hive组件的配置中原来有关/tmp的配置只有两项,一项为heapdump输出目录,另一项为配置审计过滤条件,均不是配置spark-submit.xxx.properties的生成目录。

2.查看spark组件,搜索/tmp

713ae0b04dce2e817400a8ec6bfc1c65.png

从图上可以得知hive组件的配置中原来有关/tmp的配置只有一项,为heap dump输出目录,不是配置spark-submit.xxx.properties的生成目录。

从以上可知,控制台上并没有显著可直接配置该目录的配置项。

3

查看官网

1.查看hive官网配置介绍地址如下

https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties

为默认情况下该文件生成在/tmp目录下,因此仍然直接搜索”/tmp”,得到以下几个与“/tmp”目录有相关的配置项,依次查看。

36a5e70e56d4f77dfee24e3c6c7daa6d.png

31ab165e23335fee8588e8b5d455148d.png

bbbd740f4639c78324ebc8618b898785.png

3c2fd7acdce8dcac8705e3f9a02450ab.png

从以上配置项的描述中,可以看到并没有相符合的配置项存在。

2.查看spark官网配置介绍

http://spark.apache.org/docs/latest/configuration.html

同样直接搜索”/tmp”,得到以下几个与“/tmp”目录有相关的配置项,依次查看。

df1de8e1d93cdd62b3dbf997000fc103.png

0d21ebd0a12932973cd6b7fd4f431c7b.png

93fba70f4d760163a06328a6880914d8.png

从以上配置项的描述中,可以看到并没有相符合的配置项存在。

4

Hive源码查看

通过hive2源代码,查看spark-submit.xxx.properties文件生成时目录的选择。生成该配置文件所在的类为org.apache.hive.spark.client.AbstractSparkClient,在该类的startDriver()方法中通过如下代码生成该配置文件:

a190dec91d7635084990cd4b625c3fc5.png

查看调用关系

129bc334bd27f879fbb7748b38b876f4.png

8dfa2306397d009b32706740bc1075f6.png

bae5e909e66d42cf1fa720c8f20c06e0.png

7d9d316fc73c5ce9ae5fcb8ac5b28a74.png

通过调用关系我们可以看到,该文件生成在java.io.tmpdir配置的目录当中,默认情况下,不同的系统该默认值不同,window系统下该值是C:\Users\登录用户~1\AppData\Local\Temp\,而Linux系统该值是/tmp。

因此,通过在hiveserver2的启动配置内,添加“-Djava.io.tmodir=目标目录”,就能修改该文件生成的目录。

5

验证

这里我们通过将该目录修改到/data0/tmp目录下为例进行测试

1.在hiveserver2所在节点上,创建/data0/tmp目录,并赋予1777权限

mkdir -p /data0/tmp
chmod 1777 /data0/tmp

653b276058a83511a33e20f993df3325.png

2.在控制台上打开hive组件的配置界面,搜索“JavaConfiguration Options for HiveServer2”,在末尾添加:

-Djava.io.tmpdir=/data0/tmp

c890f32ca1b476454b653b85c296d563.png

保存并根据提示重启Hive服务。

3.打开beeline连接hiveserver2

086b887d9aafdb832c54e29417287091.png

在未执行需要spark参与的sql之前,未生成spark-submit.xxx.properties文件:

f61b6528d5dda05663ac6e4c2afeeec2.png

4.执行count()操作

82f705a9a4ba43217fd9113c71ea92cb.png

32587e188208f478739485fdd9e33998.png

5.查看spark-submit.xxx.properties文件生成情况

6f88c30587511b61af92f188440bb790.png

可以看到,现在该文件已不再生成在/tmp目录下,而是生成在新配置的/data0/tmp目录下。

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

2070e8fa0cd3a1c924fd424dd8727d69.gif

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值