- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的目标是将自定义 .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")
我仍然需要导入 Test.py 文件,就像导入常规 python 文件一样:
import Test
然后我可以打电话
Test.func()
并且有效。我认为“导入测试”不是必需的,因为我将文件添加到 spark 上下文中,但显然没有相同的效果。感谢 mark91 为我指明了正确的方向。
2017 年 10 月 28 日更新:
如评论中所问,这里有关于 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()
关于python - Pyspark 导入 .py 文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34398590/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!