Spark找不到名为

时间:2017-10-25 14:07:58

标签: apache-spark pyspark

我有一个简单的火花程序,我收到以下错误 -

错误: -

ImportError: No module named add_num

用于运行的命令: -

./bin/spark-submit /Users/workflow/test_task.py

代码: -

from __future__ import print_function
from pyspark.sql import SparkSession
from add_num import add_two_nos

def map_func(x):    
    print(add_two_nos(5))
    return x*x

def main():
    spark = SparkSession\
        .builder\
        .appName("test-task")\
        .master("local[*]")\
        .getOrCreate()      
    rdd = spark.sparkContext.parallelize([1,2,3,4,5]) # parallelize into 2
    rdd = rdd.map(map_func) # call the image_chunk_func 
    print(rdd.collect())    
    spark.stop()

if __name__ == "__main__":  
    main()

功能代码: -

def add_two_nos(x):
    return x*x

2 个答案:

答案 0 :(得分:1)

您可以通过添加语句sc.addPyFile(Path)来指定要在代码中导入的.py文件表单。
传递的路径可以是本地文件,HDFS(或其他Hadoop支持的文件系统)中的文件,也可以是HTTP,HTTPS或FTP URI。
然后使用from add_num import add_two_nos

答案 1 :(得分:0)

您需要在spark-submit命令中包含一个包含add_num.py的zip。

./bin/spark-submit --py-files sources.zip /Users/workflow/test_task.py 

当向python提交python应用程序时,main函数/文件(此处为test_task.py)导入的所有源文件应以egg或zip格式打包,并使用--py-files选项提供给spark。如果main函数只需要一个其他文件,您可以直接提供它而不压缩它。

./bin/spark-submit --py-files add_num.py /Users/workflow/test_task.py

上面的命令也应该有效,因为只需要一个其他的python源文件。