【发布时间】:2018-04-16 12:23:40
【问题描述】:
我正在尝试复制这里给出的灵魂https://www.cloudera.com/documentation/enterprise/5-7-x/topics/spark_python.html 在 pypspark 中导入外部包。但它失败了。
我的代码:
spark_distro.py
from pyspark import SparkContext, SparkConf
def import_my_special_package(x):
from external_package import external
return external.fun(x)
conf = SparkConf()
sc = SparkContext()
int_rdd = sc.parallelize([1, 2, 3, 4])
int_rdd.map(lambda x: import_my_special_package(x)).collect()
external_package.py
class external:
def __init__(self,in):
self.in = in
def fun(self,in):
return self.in*3
spark 提交命令:
spark-submit \
--master yarn \
/path to script/spark_distro.py \
--py-files /path to script/external_package.py \
1000
实际错误:
Actual:
vs = list(itertools.islice(iterator, batch))
File "/home/gsurapur/pyspark_examples/spark_distro.py", line 13, in <lambda>
File "/home/gsurapur/pyspark_examples/spark_distro.py", line 6, in import_my_special_package
ImportError: No module named external_package
预期输出:
[3,6,9,12]
我也尝试了sc.addPyFile 选项,但同样的问题失败了。
【问题讨论】:
标签: apache-spark pyspark hadoop-yarn