当前位置: 首页 > news >正文

北京微网站建设设计服务百度关键词排名突然下降很多

北京微网站建设设计服务,百度关键词排名突然下降很多,做网站选择什么相机,传媒网站建设方案背景 目前spark的repartition()方法是随机分配数据到下游,这会导致一个问题,有时候如果我们用repartition方法的时候,如果任务发生了重试,就有可能导致任务的数据不准确,那这个时候改怎么解决这个问题呢? …

背景

目前spark的repartition()方法是随机分配数据到下游,这会导致一个问题,有时候如果我们用repartition方法的时候,如果任务发生了重试,就有可能导致任务的数据不准确,那这个时候改怎么解决这个问题呢?

分析

在Spark RDD中存在着名为outputDeterministicLevel的变量,如下:

private[spark] final lazy val outputDeterministicLevel: DeterministicLevel.Value = {if (isReliablyCheckpointed) {DeterministicLevel.DETERMINATE} else {getOutputDeterministicLevel}}

那么该变量的作用是什么呢?让我们分析一下:
改变量最终会被StageisIndeterminate方法调用:

 def isIndeterminate: Boolean = {rdd.outputDeterministicLevel == DeterministicLevel.INDETERMINATE}

而该方法会被DAGScheduler调用,有两处地方会被调用:

  • submitMissingTasks中调用
   private def submitMissingTasks(stage: Stage, jobId: Int): Unit = {logDebug("submitMissingTasks(" + stage + ")")// Before find missing partition, do the intermediate state clean work first.// The operation here can make sure for the partially completed intermediate stage,// `findMissingPartitions()` returns all partitions every time.stage match {case sms: ShuffleMapStage if stage.isIndeterminate && !sms.isAvailable =>mapOutputTracker.unregisterAllMapOutput(sms.shuffleDep.shuffleId)case _ =>}

该方法主要用于在重新提交失败的stage时候,用来判断是否需要重新计算上游的所有任务。

  • handleTaskCompletion中调用
      case FetchFailed(bmAddress, shuffleId, _, mapIndex, _, failureMessage) =>。。。val noResubmitEnqueued = !failedStages.contains(failedStage)failedStages += failedStagefailedStages += mapStageif (noResubmitEnqueued) {// If the map stage is INDETERMINATE, which means the map tasks may return// different result when re-try, we need to re-try all the tasks of the failed// stage and its succeeding stages, because the input data will be changed after the// map tasks are re-tried.// Note that, if map stage is UNORDERED, we are fine. The shuffle partitioner is// guaranteed to be determinate, so the input data of the reducers will not change// even if the map tasks are re-tried.if (mapStage.isIndeterminate) {

这里如果任务Fetch失败了,根据该shuffle所对应的上游stage是不是isIndeterminate来向DAGScheduler提交ResubmitFailedStages事件,从而调用submitMissingTasks方法进行上游所有任务或者单个任务的重试。

再回到outputDeterministicLevel变量,该变量会调用getOutputDeterministicLevel方法进行循环调用上游的outputDeterministicLevel变量来确定outputDeterministicLevel的值。

结论

所以根据以上分析,我们可以改写对应的RDD的outputDeterministicLevel变量或者getOutputDeterministicLevel方法来进行stage任务的全部重试与否

http://www.ritt.cn/news/25939.html

相关文章:

  • 达川网站制作友链之家
  • 权威发布是鼠头百度竞价优化
  • 北京企业推广神马seo教程
  • 网站建设年份查询全网搜索
  • 上海网站制作建设多少钱营销型网站建设报价
  • 学院网站设计模板seo的培训班
  • 安徽湖滨建设集团有限公司网站淘宝客seo推广教程
  • 在线网站cms识别营销策划方案
  • 怎么做网站宣传厦门seo全网营销
  • 网站后台做数据库备份代码2022今天刚刚发生地震了
  • 罗岗网站建设公司长沙公司网络营销推广
  • 个人网站建设中代码下载市场seo是什么
  • 哪个网站有适合小学生做的题目关键词挖掘查询工具爱站网
  • 网站怎么做企业百度数据中心
  • 网站建设总体流程域名注册信息怎么查
  • 网站404页面的作用百度热搜关键词排名
  • html课设做网站无锡seo公司找哪家好
  • 旅游网站开发需求报告宁德市是哪个省
  • 高密建设局网站搜索大全搜索引擎
  • 中国建设网官方网站客服电话常见的网络营销工具有哪些
  • 最全做暖暖网站淮北网站建设
  • 展示型网站seo排名点击软件推荐
  • 公司做外贸网站网站如何快速推广
  • wordpress 牛逼潍坊seo招聘
  • 国内建网站流程公司网站营销
  • 太原网站排名公司广州网站快速排名优化
  • 如何在对方网站上做外链手机端竞价恶意点击能防止吗
  • 山西建设工程备案网站网络营销策略优化
  • 社交网站开发 转发成都seo
  • 湖州网站建站seo综合查询是什么意思