我正在三台虚拟机上使用Spark 1.6.0,其中1个是主节点(独立),另外两个是工作节点,每个节点有8G内存和2个CPU。
我正在使用以下内核配置:
{
"display_name": "PySpark ",
"language": "python3",
"argv": [
"/usr/bin/python3",
"-m",
"IPython.kernel",
"-f",
"{connection_file}"
],
"env": {
"SPARK_HOME": "<mypath>/spark-1.6.0",
"PYTHONSTARTUP": "<mypath>/spark-1.6.0/python/pyspark/shell.py",
"PYSPARK_SUBMIT_ARGS": "--master spark://<mymaster>:7077 --conf spark.executor.memory=2G pyspark-shell --driver-class-path /opt/vertica/java/lib/vertica-jdbc.jar"
}
}
目前,这个可以正常运行。我可以像在pyspark shell中一样使用spark context的sc
和sqlContext
,无需导入任何内容。
问题出现在我使用多个notebook时:
在我的spark主节点上,我看到两个'pyspark-shell'应用程序,这有点说得过去,但一次只能运行一个。但是,在这里,“运行”并不意味着执行任何操作,即使我在notebook上什么都不运行,也会显示为“正在运行”。鉴于此,我无法在notebook之间共享资源,这很令人沮丧(我目前必须杀死第一个shell(= notebook kernel),以运行第二个)。
如果您有任何关于如何解决这个问题的想法,请告诉我!另外,我不确定我使用kernel的方式是否为最佳实践,我已经遇到了让spark和jupyter一起工作的困难。
感谢大家