错误:必须指定主要资源(JAR 或 Python 或 R 文件) - IPython 笔记本

Posted

技术标签:

【中文标题】错误:必须指定主要资源(JAR 或 Python 或 R 文件) - IPython 笔记本【英文标题】:Error: Must specify a primary resource (JAR or Python or R file) - IPython notebook 【发布时间】:2015-07-02 20:08:17 【问题描述】:

我尝试在 IPython Notebook 中运行 Apache Spark,遵循这个指令(以及 cmets 中的所有建议)-link

但是当我通过这个命令运行 IPython Notebook 时:

ipython notebook --profile=pyspark

我收到此错误:

Error: Must specify a primary resource (JAR or Python or R file)

如果我在 shell 中运行 pyspark,一切正常。这意味着我在连接 Spark 和 IPython 时遇到了一些问题。

顺便说一下,这是我的 bash_profile:

export SPARK_HOME="$HOME/spark-1.4.0"
export PYSPARK_SUBMIT_ARGS='--conf "spark.mesos.coarse=true" pyspark-shell'

其中包含 ~/.ipython/profile_pyspark/startup/00-pyspark-setup.py

# Configure the necessary Spark environment
import os
import sys

# Spark home
spark_home = os.environ.get("SPARK_HOME")

# If Spark V1.4.x is detected, then add ' pyspark-shell' to
# the end of the 'PYSPARK_SUBMIT_ARGS' environment variable
spark_release_file = spark_home + "/RELEASE"
if os.path.exists(spark_release_file) and "Spark 1.4" 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

# Add the spark python sub-directory to the path
sys.path.insert(0, spark_home + "/python")

# Add the py4j to the path.
# You may need to change the version number to match your install
sys.path.insert(0, os.path.join(spark_home, "python/lib/py4j-0.8.2.1-src.zip"))

# Initialize PySpark to predefine the SparkContext variable 'sc'
execfile(os.path.join(spark_home, "python/pyspark/shell.py"))

什么可能是必要的 - 昨天我将我的 OS X 升级到 10.10.4

【问题讨论】:

我会尝试使用 pypi.python.org/pypi/findspark 之类的方法来设置 spark,而不是依赖博客文章告诉您以不必要且不太灵活的复杂方式进行配置。 所以,我尝试了,但它没有帮助。无论如何,谢谢! @Matt 我希望我能给你的评论 5 票。我尝试了许多博文和新的 Toree 项目,但都经历了不同程度的痛苦,但并没有太大的成功。借助 findspark,MinRK 再次提供了一个简单易用的出色解决方案。 【参考方案1】:

我遇到了类似的问题,当与spark-1.4.0 一起使用时,我使用了相同的00-pyspark-setup.py 文件。

正如 Philippe Rossignol 的 cmets 在this blog 上所解释的, 以下行已添加到 00-pyspark-setup.py 文件中 因为PYSPARK_SUBMIT_ARGS 需要参数pyspark-shell

# If Spark V1.4.x is detected, then add ' pyspark-shell' to
# the end of the 'PYSPARK_SUBMIT_ARGS' environment variable
spark_release_file = spark_home + "/RELEASE"
if os.path.exists(spark_release_file) and "Spark 1.4" 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

但是在我的spark-1.4.0 文件夹中,没有RELEASE 文件,因此将pyspark-shell 附加到PYSPARK_SUBMIT_ARGSif 条件永远不会满足。

作为一个笨拙的解决方案,我只是注释掉了检查发布文件的行,所以只剩下以下几行:

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

【讨论】:

以上是关于错误:必须指定主要资源(JAR 或 Python 或 R 文件) - IPython 笔记本的主要内容,如果未能解决你的问题,请参考以下文章

python中with用法及原理

这是啥错误? “无法添加数据连接。找不到任何适合指定文化或中性文化的资源。”

用intellij创建jar:“主类不可用或不可加载”

错误:必须指定“url”属性或函数,但指定了 url

在 Python 中建立引擎连接时出现 AWS Wrangler 错误,必须指定区域吗?

vs的一个奇葩错误 : 未能找到任何适合于指定的区域性或非特定区域性的资源...