spark submit的时候怎么导入自己写的依赖模块?
python代码中的import
from spark_learning.utils.default_utils import setDefaultEncoding,initSparkContext,ensureOffset
submit命令:
bin/spark-submit --jars /home/jabo/software/spark-1.5.2-bin-hadoop2.6/lib/spark-streaming-kafka-assembly_2.10-1.5.2.jar\
/home/jabo/spark-by-python/spark_learning/third_day/streaming_kafka_avg.py\
--py-files /home/jabo/spark-by-python/spark_learning/utils/default_utils.py
官网解释:
For Python applications, simply pass a .py file in the place of <application-jar> instead of a JAR, and add Python .zip, .egg or .py files to the search path with --py-files.
但是会报错,找不到import模块:
Traceback (most recent call last):
File "/home/jabo/spark-by-python/spark_learning/third_day/streaming_kafka_avg.py", line 10, in <module>
import spark_learning.utils.default_utils
ImportError: No module named spark_learning.utils.default_utils
如何解决??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你可以试一下把--py-files 参数 放在你要运行脚本的前面哈!刚才我们也遇到这个问题 就是这样解决的!
答案链接:http://www.cnblogs.com/cbryge...
简单来说, 所有的import操作必须在context完成之后. pyspark之所以不报错就是因为context已经初始化好了. 所以我们简单改下 app.py 中import的位置就可以了:
if name == "__main__": sc = SparkContext(appName="ACoolApp") import common
然后把--py-files 参数 放在你要运行脚本的前面