如何阅读检查点RDD

时间:2017-05-17 10:29:20

标签: scala apache-spark

这个问题不是什么新鲜事,但经过大量的谷歌搜索并且没有运气,我在这里发布了这个问题。

sc.setCheckpointDir("C:\\mydrive\\Checkpoint")
val data = Seq(1,2,3,4,5,6,7,8,9)
val base = sc.parallelize(data)
base.checkpoint()
base.collect().foreach { println(_) }

我的上面的代码做了检查,但我不确定代码是否从后续运行中读取数据。请查找日志详细信息

  

17/05/17 15:37:48 DEBUG ReliableCheckpointRDD:没有分区文件

     

17/05/17 15:37:48 INFO ReliableRDDCheckpointData:完成检查点   RDD 0到   文件:/ C:/ mydrive /检查点/ d10861cd-70c3-4e60-bdd3-a4753dfee1b2 / RDD-0,   新父母是RDD 1

日志给我的印象是它不会在后续运行中读取检查点数据而是写入。如果是这种情况,如何在后续运行中读取检查点数据?我在这里失踪了什么?

2 个答案:

答案 0 :(得分:1)

# W10 0.0.0.0 cs1.wpc.v0cdn.net 0.0.0.0 df.telemetry.microsoft.com 0.0.0.0 i1.services.social.microsoft.com 0.0.0.0 i1.services.social.microsoft.com.nsatc.net 0.0.0.0 oca.telemetry.microsoft.com 0.0.0.0 oca.telemetry.microsoft.com.nsatc.net 0.0.0.0 pre.footprintpredict.com 0.0.0.0 reports.wes.df.telemetry.microsoft.com 0.0.0.0 sqm.telemetry.microsoft.com 0.0.0.0 sqm.telemetry.microsoft.com.nsatc.net 0.0.0.0 statsfe1.ws.microsoft.com 0.0.0.0 telecommand.telemetry.microsoft.com 0.0.0.0 telecommand.telemetry.microsoft.com.nsatc.net 0.0.0.0 telemetry.appex.bing.net 0.0.0.0 telemetry.urs.microsoft.com 0.0.0.0 vortex-sandbox.data.microsoft.com 0.0.0.0 vortex-win.data.microsoft.com 0.0.0.0 vortex.data.microsoft.com # http://www.dslreports.com/forum/r30676597-Complete-Win10-blocking-host-file #0.0.0.0 fe2.update.microsoft.com.akadns.net #0.0.0.0 sls.update.microsoft.com.akadns.net 0.0.0.0 134.170.30.202 0.0.0.0 137.116.81.24 0.0.0.0 204.79.197.200 0.0.0.0 23.218.212.69 0.0.0.0 65.39.117.230 0.0.0.0 65.55.108.23 0.0.0.0 a-0001.a-msedge.net 0.0.0.0 a-0002.a-msedge.net 0.0.0.0 a-0003.a-msedge.net 0.0.0.0 a-0004.a-msedge.net 0.0.0.0 a-0005.a-msedge.net 0.0.0.0 a-0006.a-msedge.net 0.0.0.0 a-0007.a-msedge.net 0.0.0.0 a-0008.a-msedge.net 0.0.0.0 a-0009.a-msedge.net 0.0.0.0 a-msedge.net 0.0.0.0 a.ads1.msn.com 0.0.0.0 a.ads2.msads.net 0.0.0.0 a.ads2.msn.com 0.0.0.0 a.rad.msn.com 0.0.0.0 ac3.msn.com 0.0.0.0 ad.doubleclick.net 0.0.0.0 adnexus.net 0.0.0.0 adnxs.com 0.0.0.0 ads.msn.com 0.0.0.0 ads1.msads.net 0.0.0.0 ads1.msn.com 0.0.0.0 aidps.atdmt.com 0.0.0.0 aka-cdn-ns.adtech.de 0.0.0.0 apps.skype.com 0.0.0.0 arc.msn.com 0.0.0.0 az361816.vo.msecnd.net 0.0.0.0 az512334.vo.msecnd.net 0.0.0.0 b.ads1.msn.com 0.0.0.0 b.ads2.msads.net 0.0.0.0 b.rad.msn.com 0.0.0.0 bingads.microsoft.com 0.0.0.0 bs.serving-sys.com 0.0.0.0 c.atdmt.com 0.0.0.0 c.msn.com 0.0.0.0 cdn.atdmt.com 0.0.0.0 cds26.ams9.msecn.net 0.0.0.0 choice.microsoft.com 0.0.0.0 choice.microsoft.com.nsatc.net 0.0.0.0 compatexchange.cloudapp.net 0.0.0.0 corp.sts.microsoft.com 0.0.0.0 corpext.msitadfs.glbdns2.microsoft.com 0.0.0.0 db3aqu.atdmt.com 0.0.0.0 df.telemetry.microsoft.com 0.0.0.0 diagnostics.support.microsoft.com 0.0.0.0 ec.atdmt.com 0.0.0.0 edge.quantserve.com 0.0.0.0 fe2.update.microsoft.com.akadns.net 0.0.0.0 feedback.microsoft-hohm.com 0.0.0.0 feedback.search.microsoft.com 0.0.0.0 feedback.windows.com 0.0.0.0 flex.msn.com 0.0.0.0 fpt.live-partner.com 0.0.0.0 g.msn.com 0.0.0.0 h1.msn.com 0.0.0.0 i1.services.social.microsoft.com 0.0.0.0 i1.services.social.microsoft.com.nsatc.net 0.0.0.0 lb1.www.ms.akadns.net 0.0.0.0 live.rads.msn.com 0.0.0.0 m.adnxs.com 0.0.0.0 m.hotmail.com 0.0.0.0 msedge.net 0.0.0.0 msftncsi.com 0.0.0.0 msnbot-65-55-108-23.search.msn.com 0.0.0.0 msntest.serving-sys.com 0.0.0.0 oca.telemetry.microsoft.com 0.0.0.0 oca.telemetry.microsoft.com.nsatc.net 0.0.0.0 onesettings-bn2.metron.live.com.nsatc.net 0.0.0.0 onesettings-cy2.metron.live.com.nsatc.net 0.0.0.0 onesettings-db5.metron.live.com.nsatc.net 0.0.0.0 onesettings-hk2.metron.live.com.nsatc.net 0.0.0.0 pre.footprintpredict.com 0.0.0.0 preview.msn.com 0.0.0.0 pricelist.skype.com 0.0.0.0 rad.live.com 0.0.0.0 rad.msn.com 0.0.0.0 redir.metaservices.microsoft.com 0.0.0.0 reports.wes.df.telemetry.microsoft.com 0.0.0.0 rpt.msn.com 0.0.0.0 s.gateway.messenger.live.com 0.0.0.0 s0.2mdn.net 0.0.0.0 sO.2mdn.net 0.0.0.0 schemas.microsoft.akadns.net 0.0.0.0 secure.adnxs.com 0.0.0.0 secure.flashtalking.com 0.0.0.0 services.wes.df.telemetry.microsoft.com 0.0.0.0 settings-sandbox.data.microsoft.com 0.0.0.0 settings-win.data.microsoft.com 0.0.0.0 settings.data.glbdns2.microsoft.com 0.0.0.0 sls.update.microsoft.com.akadns.net 0.0.0.0 sqm.df.telemetry.microsoft.com 0.0.0.0 sqm.telemetry.microsoft.com 0.0.0.0 sqm.telemetry.microsoft.com.nsatc.net 0.0.0.0 ssw.live.com 0.0.0.0 static.2mdn.net 0.0.0.0 statsfe1.ws.microsoft.com 0.0.0.0 statsfe2.update.microsoft.com.akadns.net 0.0.0.0 statsfe2.ws.microsoft.com 0.0.0.0 survey.watson.microsoft.com 0.0.0.0 telecommand.telemetry.microsoft.com 0.0.0.0 telecommand.telemetry.microsoft.com.nsat­c.net 0.0.0.0 telecommand.telemetry.microsoft.com.nsatc.net 0.0.0.0 telemetry.appex.bing.net 0.0.0.0 telemetry.appex.bing.net:443 0.0.0.0 telemetry.microsoft.com 0.0.0.0 telemetry.urs.microsoft.com 0.0.0.0 ui.skype.com 0.0.0.0 v10.vortex-win.data.metron.live.com.nsatc.net 0.0.0.0 v10.vortex-win.data.microsoft.com 0.0.0.0 view.atdmt.com 0.0.0.0 vortex-bn2.metron.live.com.nsatc.net 0.0.0.0 vortex-cy2.metron.live.com.nsatc.net 0.0.0.0 vortex-db5.metron.live.com.nsatc.net 0.0.0.0 vortex-hk2.metron.live.com.nsatc.net 0.0.0.0 vortex-sandbox.data.microsoft.com 0.0.0.0 vortex-win.data.metron.live.com.nsatc.net 0.0.0.0 vortex-win.data.microsoft.com 0.0.0.0 vortex.data.glbdns2.microsoft.com 0.0.0.0 vortex.data.metron.live.com.nsatc.net 0.0.0.0 vortex.data.microsoft.com 0.0.0.0 watson.live.com 0.0.0.0 watson.microsoft.com 0.0.0.0 watson.ppe.telemetry.microsoft.com 0.0.0.0 watson.telemetry.microsoft.com 0.0.0.0 watson.telemetry.microsoft.com.nsatc.net 0.0.0.0 wes.df.telemetry.microsoft.com 0.0.0.0 wes.df.telemetry.microsoft.comne 会自动使用,当checkpoints RDD被重复使用但是很懒,如果checkpointed没有保留,will require recomputation

由于您的管道完全是线性的,并且您没有重复使用RDD,因此它几乎没用。

答案 1 :(得分:1)

检查点是截断RDD沿袭图并将其保存到可靠的分布式(HDFS)或本地文件系统的过程。 检查点有两种类型:

  • 可靠 - 在Spark(核心)中,RDD检查点将实际的中间RDD数据保存到可靠的分布式文件系统, 例如HDFS。

  • 本地 - 在Spark Streaming或GraphX中 - RDD检查点截断RDD沿袭图。

由Spark应用程序开发人员决定何时以及如何使用RDD.checkpoint()方法检查点。 在使用检查点之前,Spark开发人员必须使用SparkContext.setCheckpointDir(directory: String)方法设置检查点目录。

可靠的检查点

您调用SparkContext.setCheckpointDir(directory: String)来设置检查点目录 - 检查点RDD的目录。如果在群集上运行,则该目录必须是HDFS路径。原因是驱动程序可能会尝试从其自己的本地文件系统重建检查点RDD,这是不正确的,因为检查点文件实际上是在执行程序机器上。

通过调用RDD.checkpoint()标记RDD以进行检查点设置。 RDD将保存到检查点目录内的文件中,并且将删除对其父RDD的所有引用。必须在对此RDD执行任何作业之前调用此函数。

强烈建议在内存中保留一个检查点RDD,否则将其保存在文件中将需要重新计算。

让我们假设您坚持RDD命名"用户"并按名称使用保留的RDD呼叫请参考下面的代码片段:

import com.typesafe.config.Config
import org.apache.spark.SparkContext, SparkContext._
import org.apache.spark.rdd.RDD

trait UsersSparkJob extends spark.jobserver.SparkJob with spark.jobserver.NamedRddSupport with UsersRDDBuilder {
  val rddName = "users"


  def validate(sc: SparkContext, config: Config): spark.jobserver.SparkJobValidation = spark.jobserver.SparkJobValid
}

object GetOrCreateUsers extends UsersSparkJob {

  override def runJob(sc: SparkContext, config: Config) = {
    val users: RDD[(Reputation, User)] = namedRdds.getOrElseCreate(
      rddName,
      build(sc))

    users.take(5)
  }
}