【发布时间】:2016-03-27 16:46:57
【问题描述】:
我的目标是将自定义 .py 文件导入我的 spark 应用程序并调用该文件中包含的一些函数
这是我尝试过的:
我有一个名为 Test.py 的测试文件,如下所示:
def func():
print "Import is working"
在我的 Spark 应用程序中,我执行以下操作(如文档中所述):
sc = SparkContext(conf=conf, pyFiles=['/[AbsolutePathTo]/Test.py'])
我也尝试过这个(在创建 Spark 上下文之后):
sc.addFile("/[AbsolutePathTo]/Test.py")
在提交我的 spark 应用程序时,我什至尝试了以下方法:
./bin/spark-submit --packages com.datastax.spark:spark-cassandra-connector_2.10:1.5.0-M2 --py-files /[AbsolutePath]/Test.py ../Main/Code/app.py
但是,我总是收到名称错误:
NameError: name 'func' is not defined
当我在 app.py 中调用 func() 时。 (如果我尝试调用 Test.func(),会出现同样的错误)
最后,al 还尝试使用与上述相同的命令在 pyspark shell 中导入文件:
sc.addFile("/[AbsolutePathTo]/Test.py")
奇怪的是,我在导入时没有收到错误,但我仍然无法在没有收到错误的情况下调用 func()。另外,不确定是否重要,但我在一台机器上本地使用 spark。
我真的尝试了我能想到的一切,但仍然无法让它发挥作用。可能我错过了一些非常简单的东西。任何帮助将不胜感激。
【问题讨论】:
-
绝对路径是否包含空格?你是在 app.py 文件中导入的吗?
-
不,路径中没有空格。是的,app.py 是我尝试导入的 spark 应用程序。但正如我所说,如果我尝试在 pyspark shell 中进行导入,我也会遇到同样的问题。
-
你是怎么导入的?
-
除了我在问题中尝试和解释的 3 种不同方法之外,我不确定您所说的“如何”是什么意思?
-
我的意思是,在app.py文件中,如何导入文件Test.py?
标签: python apache-spark python-import pyspark