在 spark 环境中运行 python 程序时出错

Posted

技术标签:

【中文标题】在 spark 环境中运行 python 程序时出错【英文标题】:error while running a python program in spark environment 【发布时间】:2015-11-17 06:56:04 【问题描述】:

我使用的是 spark 1.3.0。

我在 spark python shell 中运行 python 程序时遇到问题。

这就是我提交作业的方式:

/bin/spark-submit progname.py

我发现的错误是,

NameError: 名称 'sc' 未定义

在那条线上。

有什么想法吗? 提前致谢

【问题讨论】:

【参考方案1】:
 ## Imports

from pyspark import SparkConf, SparkContext

## CONSTANTS

APP_NAME = "My Spark Application"

##OTHER FUNCTIONS/CLASSES

## Main functionality

def main(sc):

    rdd = sc.parallelize(range(1000), 10)

    print rdd.mean()

if __name__ == "__main__":
     # Configure OPTIONS
     conf = SparkConf().setAppName(APP_NAME)
     conf = conf.setMaster("local[*]")
     #in cluster this will be like
     #"spark://ec2-0-17-03-078.compute-#1.amazonaws.com:7077"
     sc   = SparkContext(conf=conf)
     # Execute Main functionality
main(sc)

【讨论】:

我试图复制粘贴上面的程序并运行它。 IndentationError: expected an indented block 我收到此错误。所以我更麻烦你了。但非常感谢你的帮助 if 语句后有 /t(做了 4 个空格)吗? 是的,先生。现在我收到此错误 zipimport.ZipImportError: can't decompress data; zlib 不可用 如果您不介意,您可以提供您的电子邮件 ID。我会把截图发给你。抱歉又给你添麻烦了。 [link] askubuntu.com/questions/661039/… 你会在这里找到答案【参考方案2】:
conf = pyspark.SparkConf()

这就是你应该如何创建 SparkConf 对象。

您还可以使用链接来做一些事情,例如设置应用程序名称等

conf = pyspark.SparkConf().setAppName("My_App_Name")

然后传递这个配置变量来创建火花上下文。

【讨论】:

【参考方案3】:

Spark 程序必须做的第一件事是创建一个 SparkContext 对象,它告诉 Spark 如何访问集群。要创建 SparkContext,您首先需要构建一个包含应用程序信息的 SparkConf 对象。

conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)

【讨论】:

很抱歉再次询问。你能告诉我如何建立一个 sparkConf 吗?在终端?还是在哪里?再次感谢。 使用 new SparkConf() 创建一个 SparkConf 对象,它将从任何 spark 加载值。* Python 系统属性 appName 参数是您的应用程序在集群 UI 上显示的名称。 master 是 Spark、Mesos 或 YARN 集群 URL,或者是在本地模式下运行的特殊“本地”字符串 对不起。感谢您的帮助。但我再次抛出错误。我不知道如何解决。可能是我不知道正确的语法。 :( conf = SparkConf().setAppname("README.md").setMaster("/home/nikitha/Downloads/spark-1.5.0-bin-hadoop2.4") sc = SparkContext(conf=conf) textFile= sc.textFile("README.md") 我这样给出并尝试使用 /bin/spark-submit progname.py 运行,但错误是 NameError: name 'SparkConf' is not defined 将 .master 设置为本地

以上是关于在 spark 环境中运行 python 程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

运行Spark测试时出现ClassCastException

在 Zeppelin 0.7.1 中运行 Spark 代码时出现 NullPointerException

从 apache Spark 运行 java 程序时出现 ClassNotFound 异常

spark提交jar包时出现unsupported major.minor version 52.0错误的解决方案

使用 YARN 在集群模式下运行 spark 时出现 java.io.FileNotFoundException

Spyder中运行spark