【问题标题】:Start multiple SparkContext Instances in Ipython在 Ipython 中启动多个 SparkContext 实例
【发布时间】:2015-07-09 19:28:00
【问题描述】:

我在 rhel 6 上针对 pyspark 运行了 Ipython 和 3.2(Jupiter)。我一次只能启动一个 python2 脚本,因为只有一个 spark 上下文。当我在 Ipython 中启动并运行另一个脚本(内核)时,我收到一个“地址已在使用 0.0.0.0:4040”。

为了能够在同一个 spark+yarn 集群上运行多个开发工作,我相信我需要多个 SparkContext 实例。

如何在同一个 Ipython 笔记本上实现这种并行开发工作,而无需不断关闭正在运行的实例?

【问题讨论】:

  • 好地方。所以我有点困惑,人们如何在同一个集群上运行多个应用程序?缺少 SparkContext 实例意味着我只能串行运行,或者我错过了什么?

标签: python apache-spark pyspark


【解决方案1】:

错误消息不是关于使用多个 Spark 上下文(这绝对没问题,它只是每个 JVM 或每个驱动程序一个 Spark 上下文)。

错误表明 Spark UI 端口设置为 4040,并且该端口已被正在运行的应用程序使用。您应该为每个应用设置不同的端口,例如

sparkConf.set("spark.ui.port", "4050")

【讨论】:

  • 好的,明白了。但我不知道有能力影响 pyspark 对另一个 JVM/SparkContext 实例的附加。解决方案如何适用于我在同一笔记本上的 Ipython 并行开发过程?
  • 可以设置端口吗?您是自己设置 SparkContext 还是由 IPython 为您设置?
  • Ipython 正在为我设置它。发生的情况是,我打开编写的每个脚本(Ipython 内核)都处于“内核繁忙”状态,只有第一次运行并创建 SparkContext 的脚本处于“内核空闲”状态。
  • 我面临着类似的问题。我已将 ~/.bashrc 配置为 export PYSPRAK_DRIVER_PYTHON=jupyter export PYSPARK_DRIVER_PYTHON_OPTS='/usr/local/bin/jupyter-notebook',所以当我从终端启动 pyspark 时,它会启动笔记本。但是当在我的笔记本中,我执行 SparkSession.builder.appName('test').getOrCreate(),它 WARN SparkContext: Another SparkContext is beingconstructed ..error, because only one SparkContext should be running in this JVM(参见 SPARK-2243)。另一个 SparkContext 创建于:org.apache.spark.api.java.JavaSparkContext.(JavaSparkContext.scala:58)
  • 我也尝试将 spark-defaults.conf 设置为 spark.driver.allowMultipleContexts true。但没有运气......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多