当前位置: 首页 > 知识库问答 >
问题:

sparkcontext.setcheckpointdir(hdfsPath)可以在不同的spark应用程序中设置相同的hdfsPath吗?

夏骏
2023-03-14

作为以下文件:

setCheckpointDir
public void setCheckpointDir(String directory)
Set the directory under which RDDs are going to be checkpointed.
Parameters:
directory - path to the directory where checkpoint files will be stored (must be HDFS path if running in cluster)

共有1个答案

穆睿才
2023-03-14

问题:

1)如果不同的spark应用程序sparkcontext.setcheckpointdir(hdfsPath)设置相同的hdfsPath,是否存在冲突?

答:根据下面的例子没有冲突。多个applcaition可以使用相同的检查点目录。在这个唯一的哈希类型下,将创建一个文件夹以避免冲突。

package examples

import java.io.File

import org.apache.log4j.Level


object CheckPointTest extends App {
  import org.apache.spark.sql.{Dataset, SparkSession}
  val spark = SparkSession.builder().appName("CheckPointTest").master("local").getOrCreate()
  val logger = org.apache.log4j.Logger.getLogger("org")
  logger.setLevel(Level.WARN)
  import spark.implicits._

  spark.sparkContext.setCheckpointDir("/tmp/checkpoints")


  val csvData1: Dataset[String] = spark.sparkContext.parallelize(
    """
      |id
      | a
      | b
      | c

    """.stripMargin.lines.toList).toDS()
  val frame1 = spark.read.option("header", true).option("inferSchema",true).csv(csvData1).show

  val checkpointDir = spark.sparkContext.getCheckpointDir.get
  println(checkpointDir)

println("Number of Files in Check Point Directory " + getListOfFiles(checkpointDir).length)


  def getListOfFiles(dir: String):List[File] = {
    val d = new File(dir)
    if (d.exists && d.isDirectory) {
      d.listFiles.filter(_.isFile).toList
    } else {
      List[File]()
    }
  }
}

+---+
| id|
+---+
|  a|
|  b|
|  c|
+---+

file:/tmp/checkpoints/30e6f882-b49a-42cc-9e60-59adecf13166
Number of Files in Check Point Directory 0 // this indicates once application finished removed all the RDD/DS information.


user@f0189843ecbe [~/Downloads]$ ll /tmp/checkpoints/
total 0
drwxr-xr-x  2 user  wheel   64 Mar 27 14:08 a2396c08-14b6-418a-b183-a90a4ca7dba3
drwxr-xr-x  2 user  wheel   64 Mar 27 14:09 65c8ef5a-0e64-4e79-a050-7d1ee1d0e03d
drwxr-xr-x  2 user  wheel   64 Mar 27 14:09 5667758c-180f-4c0b-8b3c-912afca59f55
drwxr-xr-x  2 user  wheel   64 Mar 27 14:10 30e6f882-b49a-42cc-9e60-59adecf13166
drwxr-xr-x  6 user  wheel  192 Mar 27 14:10 .
drwxrwxrwt  5 root    wheel  160 Mar 27 14:10 ..
user@f0189843ecbe [~/Downloads]$ du -h /tmp/checkpoints/
  0B    /tmp/checkpoints//a2396c08-14b6-418a-b183-a90a4ca7dba3
  0B    /tmp/checkpoints//5667758c-180f-4c0b-8b3c-912afca59f55
  0B    /tmp/checkpoints//65c8ef5a-0e64-4e79-a050-7d1ee1d0e03d
  0B    /tmp/checkpoints//30e6f882-b49a-42cc-9e60-59adecf13166
  0B    /tmp/checkpoints/

1)即使多个应用程序运行parllel,check point目录下也会存在唯一的哈希,因为所有的RDD/DS信息都将被存储。

2)在成功地完全执行每个Spark应用程序之后,上下文清理器将删除其中的内容…这是我从上面的实际示例中观察到的。

 类似资料:
  • 它不使用自定义工厂。并且已经有几个其他模块(对于其他特性来说是gradle模块)正在使用WorkManger而不使用Factory。现在,如果我更改这个配置并添加一个工厂,它可能会破坏其他几个地方的work manager设置。我是否可以只对模块中的WorkManager类使用工厂(或者只有一些WorkManager类应该通过工厂初始化,其他的使用默认配置)。有可能吗?希望我的问题清楚了。

  • 计费:这个应用程序存储所有的计费相关逻辑,例如;订阅计划、产品、优惠券和类似内容。 帐户:此应用程序保存帐户数据,例如:客户帐户、交易等。 现在我有一个问题,我需要在以下情况下把这两个问题联系起来: 客户(帐户应用程序)订阅的计划(在帐单应用程序中) 客户(帐户应用程序)购买的产品(在帐单应用程序中) 客户(在帐户应用程序中)发票(在帐单应用程序中) 客户(在计费应用程序中)申请/兑换的优惠券(在

  • 问题内容: 我已经在Client中上传了签名文件。现在,我从同一个客户端使用另一个开发者帐户使用了另一个应用程序。我可以上传带有相同文件的签名文件,还是可以使用新文件?请帮我… 问题答案: 密钥存储区具有一系列数字证书,这些数字证书对于发布者是唯一的,例如您的签名。它们用于验证Apps是否来自真实来源。 软件包名称+签名组合必须唯一,即一个应用不能有多个官方发行者: 设备不会使用不同的签名更新同一

  • 问题内容: 我正在使用Flamingo功能区和Substance Office 2007外观。 当然,现在 每个 控件都具有这种外观,即使对话框上也是如此。 我想要的是Office 2007中的功能,功能区具有Office 2007的外观,但其他控件保留其本机Vista / XP的外观。 是否可以为某些控件分配不同的外观?也许使用某种链接或代理外观? 问题答案: 我刚刚发现:由于物质5.0的SKI

  • 我试图在两个图上绘制熊猫数据帧。一个是matplotlib pyplot饼图,另一个是seaborn条形图。在每个图表上,我根据不同的列对数据框进行排序。此外,每个图表都代表数据框排序所依据的相应值。因此,两个图表中的行顺序不同。这样,数据框中相同的索引(或类别)在图表上以不同的颜色出现,这是令人困惑的。为了在不同的图表上有相同颜色的索引,我如何解决这个问题? 我的代码: 例如,1.1。15200

  • 问题内容: 我知道您可以通过将节点的样式设置为来设置整个textArea / Field的颜色,但是有一种方法可以设置单个行而不是所有行的颜色,同时仍然保持textArea / Field可编辑? 问题答案: JavaFX的/ 不支持该功能。您可以将RichTextFX用于作业: