Spark transform操作的非常规使用 - SparkContext.runJob()方法的调用

前文

     一般场景中,Spark计算任务中transform相关的操作都是由action进行触发的,常见的的比如write、collect、show等,或者在数据处理的过程中调用的groupbykey等API,进行shuffle数据重新分发,在提交任务时会把transform的操作作为前置任务进行提交,但是单纯的transform操作是无法触发spark计算任务的。

    但是,单纯由transform API构建的Spark计算任务,应该怎么触发计算任务呢?

    一些场景中会遇到单纯由transforms构成的计算流程,或者需要提前进行流程的计算,以节省时间,举例如下:

    1.第一种,单纯由transforms构成的计算任务,当一个数据处理流程中存在异构计算平台的时候,需要将前一个Spark计算任务的RDD数据向后进行传递,可以采用采用mapPartition的方式,以分区数据为单位进行传递,在这个spark计算任务中,必须要一个操作来触发mapPartition以及其分区操作函数,当然可以用一个简单的count()或者show()操作进行触发。

    2.第二种,需要提前进行流程的计算,尽可能的为流程的后半部分节省时间,当后面的任务触发的时候,可以直接使用前面流程计算好的数据,而不是一个假数据。

 

正文

1.count() / show() 等方式进行触发

    这是最简单的一种方式,但是会引入额外的计算成本,比如count(),而show()的API调用会触发collect函数的调用,而且使用方式上也不够优雅。

2.sparkContext.r

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值