Pyspark导入.py文件不起作用

喜藤

我的目标是将自定义.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(),则与“ Test”相同的错误

最后,al还尝试使用与上述相同的命令将文件导入pyspark shell中:

sc.addFile("/[AbsolutePathTo]/Test.py")

奇怪的是,导入时没有出现错误,但仍然无法调用func()而不得到错误。另外,不确定是否重要,但是我在一台机器上本地使用spark。

我真的尽了我所能想到的一切,但仍然无法使它起作用。可能我缺少一些非常简单的东西。任何帮助,将不胜感激。

喜藤

好吧,实际上我的问题很愚蠢。完成后:

sc.addFile("/[AbsolutePathTo]/Test.py")

我仍然必须像导入常规python文件一样导入Test.py文件:

import Test

那我可以打电话

Test.func()

而且有效。我认为“导入测试”不是必需的,因为我已将文件添加到spark上下文中,但显然效果不一样。感谢mark91为我指出正确的方向。

更新28.10.2017:

根据评论中的要求,这里有关于app.py的更多详细信息

from pyspark import SparkContext
from pyspark.conf import SparkConf

conf = SparkConf()
conf.setMaster("local[4]")
conf.setAppName("Spark Stream")
sc = SparkContext(conf=conf)
sc.addFile("Test.py")

import Test

Test.func()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档