sparkconf修改配置不生效解决方案

此文章书接上文 https://blog.csdn.net/lhy18235303007/article/details/108312872

我们已经知道,在sparksession已经启动之后,再修改sparkconf的值,是不生效的。那我们需要实现特殊任务的定制化,只能另辟蹊径。

方案一:

有的同学可能想到了,既然在sparksession启动前设置可以生效,那我在生成sparksession时就把是否压缩改为false不就可以了吗?这样做当然是可以的,但是需要具体情况具体分析,如果你的任务是一次性的,无耦合的,只是一个spark任务,那么是可以定制化开发的;但如果你的项目是一个数据处理平台,需要考虑通用性和易用性,因为用户使用你的平台配置的输出不一定只有这一个sink所以不能简单的把是否压缩改为false,需要从全局考虑。最好的方法是只影响这一个算子。

所以我们需要判断sink端是否有该算子,如果有,全局的是否压缩设置为false,同时,每个sink都要进行判断是否需要压缩以及使用什么压缩格式,示例如下:

全局压缩设置为false

每个sink端进行判断是否需要压缩

大致思路是这样,但个人感觉改动较大,并且过于繁琐。不推荐。

方案二:

只针对不需要压缩的特殊算子,进行特殊处理。即正常执行整个流程,然后把hdfs上的gz文件解压,即可实现需求。

下面给出部分示例:

可以先把输出文件压缩,然后将文件解压,这样的改动是最小的,而且影响最小。

反思:遇到问题可以多想想各种不同的解决方案,然后比较一下优劣,最后选取最好的。

           尽量选取影响面最小的方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值