当我创建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
答案 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