【问题标题】:How to start and stop spark Context Manually如何手动启动和停止火花上下文
【发布时间】:2019-06-03 20:33:49
【问题描述】:

我是 spark 新手。在我当前的 spark 应用程序脚本中,我可以发送查询到 spark 内存中保存的表并使用 spark-submit 获得所需的结果。问题是,每次 spark 上下文在完成结果后自动停止.我想按顺序发送多个查询。为此我需要保持活跃的火花上下文。我怎么能这样做?我的观点是

Manual start and stop sparkcontext by user

请建议我。我正在使用 pyspark 2.1.0。在此先感谢

【问题讨论】:

  • 如果您每次使用 spark-submit 发送查询,它将启动您的新 Spark 应用程序 (JVM),并且每当您的工作完成时,它将关闭 jvm。所以更好的方法是创建一个单一的 spark 应用程序并使用 jdbc 或 http 接受您的查询。
  • 感谢您的回复,您能否澄清一下,或者给我一些资源链接会很有帮助。
  • 好的,所以只需使用 akka-http 创建一个 http 服务器,其中一个 http 服务将接受查询作为字符串,并且该 http 服务将运行您的 spark 作业并将结果存储回 hdfs,或者如果结果将变小你可以简单地将其恢复为调用服务。

标签: apache-spark pyspark


【解决方案1】:

要回答您的问题,这是可行的

import pyspark

# start
sc = pyspark.SparkContext()

#stop
sc.stop()

【讨论】:

  • 谢谢,但这种格式对我不起作用。我的代码来自 pyspark import SparkConf,SparkContext conf=SparkConf().setMaster("local").setAppName("Friendstest") sc=SparkContext( conf=conf) #some code here sc.stop() 这个 sc.stop() 产生了相同的结果。也许你是对的,但我错过了什么。一个好的澄清会帮助我
  • 如果我使用 Thread.sleep(86400000);在代码之后。这个技巧能胜任吗?我还没试过。寻找建议。我找到了这个bigdatawhizkid.blogspot.com/2016/02/…
【解决方案2】:

试试这个代码:

conf = SparkConf().setAppName("RatingsHistogram").setMaster("local")

sc = SparkContext.getOrCreate(conf)

这确保了不会总是停止你的上下文,同时,如果现有的 Spark 上下文可用,它将被重用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 2022-08-08
    • 2016-03-29
    • 2016-02-07
    • 2020-09-03
    • 2021-12-13
    • 2020-05-29
    相关资源
    最近更新 更多