当前位置:  开发笔记 > 编程语言 > 正文

Pyspark导入.py文件无法正常工作

如何解决《Pyspark导入.py文件无法正常工作》经验,为你挑选了1个好方法。

我的目标是将自定义.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'相同的错误)

最后,我还尝试使用与上面相同的命令在pyspark shell中导入文件:

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

奇怪的是,我没有在导入时出错,但仍然,我不能在没有得到错误的情况下调用func().此外,不确定它是否重要,但我在一台机器上本地使用火花.

我真的尝试了我能想到的一切,但仍然无法让它发挥作用.可能我错过了一些非常简单的事情.任何帮助,将不胜感激.



1> Kito..:

好吧,实际上我的问题是相当愚蠢的.做完之后:

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

我仍然需要导入Test.py文件,就像我将导入常规python文件:

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()

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有