當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python pyspark SparkContext.setJobGroup用法及代碼示例

本文簡要介紹 pyspark.SparkContext.setJobGroup 的用法。

用法:

SparkContext.setJobGroup(groupId, description, interruptOnCancel=False)

將組 ID 分配給此線程啟動的所有作業,直到組 ID 設置為不同的值或被清除。

通常,應用程序中的一個執行單元由多個 Spark 操作或作業組成。應用程序程序員可以使用這種方法將所有這些作業組合在一起並給出組說明。設置後,Spark Web UI 會將此類作業與該組相關聯。

應用程序可以使用 SparkContext.cancelJobGroup() 取消該組中所有正在運行的作業。

注意

如果作業組的 interruptOnCancel 設置為 true,則作業取消將導致在作業的執行線程上調用 Thread.interrupt()。這有助於確保任務實際上及時停止,但由於 HDFS-1208,HDFS 可能會通過將節點標記為死節點來響應 Thread.interrupt(),因此默認情況下處於關閉狀態。

如果您並行運行作業,請使用 pyspark.InheritableThread 進行線程本地繼承,並防止資源泄漏。

例子

>>> import threading
>>> from time import sleep
>>> from pyspark import InheritableThread
>>> result = "Not Set"
>>> lock = threading.Lock()
>>> def map_func(x):
...     sleep(100)
...     raise RuntimeError("Task should have been cancelled")
>>> def start_job(x):
...     global result
...     try:
...         sc.setJobGroup("job_to_cancel", "some description")
...         result = sc.parallelize(range(x)).map(map_func).collect()
...     except Exception as e:
...         result = "Cancelled"
...     lock.release()
>>> def stop_job():
...     sleep(5)
...     sc.cancelJobGroup("job_to_cancel")
>>> suppress = lock.acquire()
>>> suppress = InheritableThread(target=start_job, args=(10,)).start()
>>> suppress = InheritableThread(target=stop_job).start()
>>> suppress = lock.acquire()
>>> print(result)
Cancelled

相關用法


注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.SparkContext.setJobGroup。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。