首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >jupyter中的PySpark SparkContext名称错误'sc‘

jupyter中的PySpark SparkContext名称错误'sc‘
EN

Stack Overflow用户
提问于 2016-04-23 01:07:21
回答 3查看 9.5K关注 0票数 0

我是pyspark的新手,我想在我的Ubuntu 12.04机器上使用Ipython notebook来使用pyspark。下面是pyspark和Ipython notebook的配置。

代码语言:javascript
代码运行次数:0
运行
复制
sparkuser@Ideapad:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

# Path for Spark
sparkuser@Ideapad:~$ ls /home/sparkuser/spark/
bin    CHANGES.txt  data  examples  LICENSE   NOTICE  R          RELEASE  scala-2.11.6.deb
build  conf         ec2   lib       licenses  python  README.md  sbin     spark-1.5.2-bin-hadoop2.6.tgz

我安装了Anaconda2 4.0.0和anaconda的路径:

代码语言:javascript
代码运行次数:0
运行
复制
sparkuser@Ideapad:~$ ls anaconda2/
bin  conda-meta  envs  etc  Examples  imports  include  lib  LICENSE.txt  mkspecs  pkgs  plugins  share  ssl  tests

为IPython创建PySpark配置文件。

代码语言:javascript
代码运行次数:0
运行
复制
ipython profile create pyspark

sparkuser@Ideapad:~$ cat .bashrc

export SPARK_HOME="$HOME/spark"
export PYSPARK_SUBMIT_ARGS="--master local[2]"
# added by Anaconda2 4.0.0 installer
export PATH="/home/sparkuser/anaconda2/bin:$PATH"

创建一个名为~/.ipython/profile_pyspark/startup/00-pyspark-setup.py:的文件

代码语言:javascript
代码运行次数:0
运行
复制
sparkuser@Ideapad:~$ cat .ipython/profile_pyspark/startup/00-pyspark-setup.py 
import os
import sys

spark_home = os.environ.get('SPARK_HOME', None)
sys.path.insert(0, spark_home + "/python")
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1-src.zip'))

filename = os.path.join(spark_home, 'python/pyspark/shell.py')
exec(compile(open(filename, "rb").read(), filename, 'exec'))

spark_release_file = spark_home + "/RELEASE"

if os.path.exists(spark_release_file) and "Spark 1.5.2" in open(spark_release_file).read():
    pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "")
    if not "pyspark-shell" in pyspark_submit_args: 
        pyspark_submit_args += " pyspark-shell"
        os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args

登录pyspark终端:

代码语言:javascript
代码运行次数:0
运行
复制
sparkuser@Ideapad:~$ ~/spark/bin/pyspark
Python 2.7.11 |Anaconda 4.0.0 (64-bit)| (default, Dec  6 2015, 18:08:32) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
16/04/22 21:06:55 INFO SparkContext: Running Spark version 1.5.2
16/04/22 21:07:27 INFO BlockManagerMaster: Registered BlockManager
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 1.5.2
      /_/

Using Python version 2.7.11 (default, Dec  6 2015 18:08:32)
SparkContext available as sc, HiveContext available as sqlContext.
>>> sc
<pyspark.context.SparkContext object at 0x7facb75b50d0>
>>>

当我运行以下命令时,会打开一个juypter浏览器

代码语言:javascript
代码运行次数:0
运行
复制
sparkuser@Ideapad:~$ ipython notebook --profile=pyspark
[TerminalIPythonApp] WARNING | Subcommand `ipython notebook` is deprecated and will be removed in future versions.
[TerminalIPythonApp] WARNING | You likely want to use `jupyter notebook`... continue in 5 sec. Press Ctrl-C to quit now.
[W 21:32:08.070 NotebookApp] Unrecognized alias: '--profile=pyspark', it will probably have no effect.
[I 21:32:08.111 NotebookApp] Serving notebooks from local directory: /home/sparkuser
[I 21:32:08.111 NotebookApp] 0 active kernels 
[I 21:32:08.111 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I 21:32:08.111 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
Created new window in existing browser session.

如果我在浏览器中输入以下命令,它将抛出NameError。

代码语言:javascript
代码运行次数:0
运行
复制
In [ ]: print sc
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-ee8101b8fe58> in <module>()
----> 1 print sc
NameError: name 'sc' is not defined

当我在pyspark终端中运行上面的命令时,它输出了所需的输出,但当我在jupyter中运行相同的命令时,它抛出了上面的错误。

上面是pyspark和Ipython的配置设置。如何使用jupyter配置pyspark?

EN

回答 3

Stack Overflow用户

发布于 2016-04-23 01:46:32

这里有一个解决办法,我建议你尝试一下,而不是依赖pyspark来为你加载上下文:

从安装findspark python包

代码语言:javascript
代码运行次数:0
运行
复制
pip install findspark

如果您使用Anaconda安装了Jupyter Notebook,请使用Anaconda提示符或终端:

代码语言:javascript
代码运行次数:0
运行
复制
 $CONDA_PYTHON_EXE -m pip install findspark

然后只需导入并初始化sparkcontext:-

代码语言:javascript
代码运行次数:0
运行
复制
import findspark
findspark.init()
import os

import pyspark # import pyspark only after findspark

print(sc)
print(spark)

参考:https://pypi.python.org/pypi/findspark

票数 6
EN

Stack Overflow用户

发布于 2016-05-04 22:41:26

您好,您需要在您的终端中有一个pyspark内核try:

代码语言:javascript
代码运行次数:0
运行
复制
mkdir -p ~/.ipython/kernels/pyspark

nano ~/.ipython/kernels/pyspark/kernel.json 

代码语言:javascript
代码运行次数:0
运行
复制
{ 'display_name': 'pySpark (Spark 1.6.1)', 
'language': 'python', 
'argv': [ 
    '/usr/bin/python', // Your python Path
    '-m', 'IPython.kernel', 
    '--profile=pyspark', 
    '-f', 
    '{connection_file}' 
] }

并保存(ctr + X,y)

你现在应该在你的jupyter内核中有"pyspark“。

现在或者sc已经存在于您的笔记本中,或者(尝试在单元格中调用sc ),或者尝试运行以下代码行:

代码语言:javascript
代码运行次数:0
运行
复制
import pyspark
conf = (pyspark.SparkConf().setAppName('test').set("spark.executor.memory", "2g").setMaster("local[2]"))
sc = pyspark.SparkContext(conf=conf)

您现在应该已经运行了sc。

票数 0
EN

Stack Overflow用户

发布于 2018-01-08 06:16:34

简单的建议是不要使pyspark安装复杂化。

在版本高于2.2的情况下,您可以执行一个简单的pip install pyspark来安装pyspark包。

此外,如果您还想安装jupyter,请对jupyter执行另一次pip安装。pip install pyspark pip install jupyter

或者,如果您想为spark使用另一个版本或特定的发行版,那么早期的3 minute方法应该是:https://blog.sicara.com/get-started-pyspark-jupyter-guide-tutorial-ae2fe84f594f

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36799643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档