Konsolda birden çok SparkContext oluşturmak istiyorum. mailing list'daki bir gönderiye göre, SparkConf.set ('spark.driver.allowMultipleContexts', true) yapmam gerekiyor, makul görünüyor ama işe yaramaz. Bu konuda tecrübesi olan var mı? çok teşekkürler:Konsolda birden çok SparkContexts oluşturma
feryat yapmak olduğunu ve hata mesajı, bir ipython Notebook o yaptı:
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("spark://10.21.208.21:7077").set("spark.driver.allowMultipleContexts", "true")
conf.getAll()
[(u'spark.eventLog.enabled', u'true'),
(u'spark.driver.allowMultipleContexts', u'true'),
(u'spark.driver.host', u'10.20.70.80'),
(u'spark.app.name', u'pyspark-shell'),
(u'spark.eventLog.dir', u'hdfs://10.21.208.21:8020/sparklog'),
(u'spark.master', u'spark://10.21.208.21:7077')]
sc1 = SparkContext(conf=conf.setAppName("app 1")) ## this sc success
sc1
<pyspark.context.SparkContext at 0x1b7cf10>
sc2 = SparkContext(conf=conf.setAppName("app 2")) ## this failed
ValueError Traceback (most recent call last)
<ipython-input-23-e6dcca5aec38> in <module>()
----> 1 sc2 = SparkContext(conf=conf.setAppName("app 2"))
/usr/local/spark-1.2.0-bin-cdh4/python/pyspark/context.pyc in __init__(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, gateway, jsc)
100 """
101 self._callsite = first_spark_call() or CallSite(None, None, None)
--> 102 SparkContext._ensure_initialized(self, gateway=gateway)
103 try:
104 self._do_init(master, appName, sparkHome, pyFiles, environment, batchSize, serializer,
/usr/local/spark-1.2.0-bin-cdh4/python/pyspark/context.pyc in _ensure_initialized(cls, instance, gateway)
226 " created by %s at %s:%s "
227 % (currentAppName, currentMaster,
--> 228 callsite.function, callsite.file, callsite.linenum))
229 else:
230 SparkContext._active_spark_context = instance
ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=app 1, master=spark://10.21.208.21:7077) created by __init__ at <ipython-input-21-fb3adb569241>:1
oluşturmadan önce körük buradaki görevi https://github.com/apache/spark/pull/3121, SPARK-2243 hala çözülemediğinden, spark.driver.allowMultipleContexts istisna olarak (test yapmayı desteklemek için) ve çoklu bağlamların kullanımından vazgeçilmiş gibi görünüyor. SparkContext koduna bakarak, sadece bir aktif SparkContext olabilir, bu yüzden bu sadece PySpark'a özgü sınırlama değildir. Yoksa yanılıyor muyum? – pzecevic
@pzecevic, bu doğru: teknik olarak, Spark yalnızca tek bir aktif SparkContext'i destekliyor. PySpark'ın bunun için her zaman bir hata mesajı vardı, ancak Scala/Java Spark resmi olarak desteklenmemiş olsa bile birden fazla etkin içerik oluşturmanızı engellemezdi. Bazı durumlarda birden fazla aktif içerik çalışabilir, _by accident_, bu yüzden yeni konfigürasyonu geçici bir çıkış kapağı olarak ekledik ve testte kullanmak için; kullanıcılar genellikle bu bayrağı etkinleştirmemelidir, çünkü hata denetimini yalnızca devre dışı bırakır ve aslında çoklu bağlamlar için uygun desteği etkinleştirmez. –
Tamam, açıklama için teşekkürler. Bana öyle geliyor ki, cevabınız biraz yanıltıcıdır ... Bu PySpark'a özgü bir sınırlama değildir ve charles.li birden fazla bağlamı kullanmaya çalışmamayı denemedi (uygun destek eklenene kadar) – pzecevic