将函数从不同的Python模块导入Apache Spark

将函数从不同的Python模块导入Apache Spark,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我正在尝试使用Spark完成Python Dict转换的基本任务。示例代码如下所示 from pyspark import SparkContext, SparkConf import sys sys.path.insert(0, 'path_to_myModule') from spark_test import make_generic #the function that transforms the Dict data = [{'a':1, 'b':2}, {'a':4,

我正在尝试使用Spark完成Python Dict转换的基本任务。示例代码如下所示

from pyspark import SparkContext, SparkConf
import sys
sys.path.insert(0, 'path_to_myModule')

from spark_test import make_generic       #the function that transforms the Dict

data = [{'a':1, 'b':2}, {'a':4, 'b':5}]

conf = (SparkConf()
         .setMaster("local")
         .setAppName("My app")
         .set("spark.executor.memory", "1g"))
sc = SparkContext(conf = conf)


def testing(data):
    data['a'] = data['a'] + 1
    data['b'] = data['b'] + 2
    return data

rdd1 = sc.parallelize(data)
rdd2 = rdd1.map(lambda x: testing(x))
print(rdd2.collect())

rdd3 = rdd1.map(lambda x: make_generic(x)) #does similar task as testing()
print(rdd3.collect())
模块的路径正在插入sys。然而,我得到了下面的错误

Traceback (most recent call last):
  File "/home/roshan/sample_spark.py", line 5, in <module>
    from spark_test import make_generic
ImportError: No module named 'spark_test'
回溯(最近一次呼叫最后一次):
文件“/home/roshan/sample_spark.py”,第5行,在
从spark_测试导入使_通用
ImportError:没有名为“火花测试”的模块
另外,make_generic()函数需要安装在virtualenv中的几个软件包

总而言之,我需要以下方面的帮助: 1.我需要Spark才能成功导入模块
2.能够使用virtualenv运行Spark提交作业

另外,导入是由python处理的,而不是spark。另外,这个
获取输入数据
函数驻留在哪里?@samkart很抱歉,复制错误消息时出错。我现在已经修好了。在模块中,
make_generic
函数位于不同的目录中。正如您所说,导入由Python处理。我已经将路径添加到模块中,并且
sys.path
返回得非常完美。但是,ImportErrorSpark执行器不运行驱动程序脚本,因此,
sys.path.insert()。您应该改为修改执行器的
PYTHONPATH
following。另外,有关更多详细信息,请参见此处的答案。