无法创建火花会话

时间:2019-05-03 14:02:43

标签: python machine-learning networking pyspark jupyter-notebook

  

当我创建Spark会话时,它引发了错误

  • 无法创建火花会话

  • 使用pyspark和代码段:

ValueError                                Traceback (most recent call last)
<ipython-input-13-2262882856df> in <module>()
     37 if __name__ == "__main__":
     38     conf = SparkConf()
---> 39     sc = SparkContext(conf=conf)
     40 #     print(sc.version)
     41 #     sc = SparkContext(conf=conf)

~/anaconda3/lib/python3.5/site-packages/pyspark/context.py in __init__(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, gateway, jsc, profiler_cls)
    131                     " note this option will be removed in Spark 3.0")
    132 
--> 133         SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
    134         try:
    135             self._do_init(master, appName, sparkHome, pyFiles, environment, batchSize, serializer,

~/anaconda3/lib/python3.5/site-packages/pyspark/context.py in _ensure_initialized(cls, instance, gateway, conf)
    330                         " created by %s at %s:%s "
    331                         % (currentAppName, currentMaster,
--> 332                             callsite.function, callsite.file, callsite.linenum))
    333                 else:
    334                     SparkContext._active_spark_context = instance

ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=pyspark-shell, master=local[*]) created by __init__ at <ipython-input-7-edf43bdce70a>:33 

  • 进口

from pyspark import SparkConf, SparkContext
  • 我尝试了这种替代方法,但也失败了:
spark = SparkSession(sc).builder.appName("Detecting-Malicious-URL App").getOrCreate()

这将引发另一个错误,如下所示:

NameError: name 'SparkSession' is not defined

2 个答案:

答案 0 :(得分:0)

spark上下文用于通过资源管理器连接到集群。 创建Spark上下文对象需要sparkConf,该对象存储配置参数,例如appName(用于标识您的Spark驱动程序),应用程序,在工作程序节点上运行的执行程序的核心数量和内存大小。要使用Sql,Hive的API,需要创建流式传输单独的上下文。

尽管与SparkSession一样,它提供了一个与基础Spark功能进行交互的单一入口点,并允许使用Dataframe和API对Spark进行编程。无需创建单独的会话即可使用Sql,Hive等。

要创建SparkSession,您可以使用以下构建器

  

SparkSession.builder.master(“ local”)。appName(“检测恶意URL   App“).config(” spark.some.config.option“,” some-value“)

要克服此错误

  

“ NameError:未定义名称'SparkSession'”

您可能需要使用

之类的程序包调用
  

“从pyspark.sql导入SparkSession”

pyspark.sql支持spark会话,该会话用于创建数据帧或将数据帧注册为表等。

上述错误

  

(ValueError:无法一次运行多个SparkContext;现有    init 创建的SparkContext(app = pyspark-shell,master = local [*])   在:33)

您指定的方法可能有帮助-ValueError: Cannot run multiple SparkContexts at once in spark with pyspark

答案 1 :(得分:0)

尝试一下-

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("Detecting-Malicious-URL App").getOrCreate()

在spark 2.0之前,我们必须创建一个SparkConf和SparkContext才能与Spark交互。

在Spark 2.0中,SparkSession是Spark SQL的入口点。现在,我们无需创建SparkConf,SparkContext或SQLContext,因为它们封装在SparkSession中。

有关更多详细信息,请参阅此博客:How to use SparkSession in Apache Spark 2.0