我正在运行一个EMR笔记本(平台:AWS,笔记本:jupyter,内核:PySpark)。
我需要安装.jar依赖项(sparkdl
)来处理一些图像。
使用Spark提交,我可以使用:
spark-submit --packages databricks:spark-deep-learning:1.5.0-spark2.4-s_2.11
使用本地笔记本,我可以使用:
spark = (SparkSession
.config('spark.jars.packages', 'databricks:spark-deep-learning:1.5.0-spark2.4-s_2.11')
.getOrCreate()
)
但是如何在EMR笔记本上做同样的事情?
编辑: 我尝试过
%%configure -f
{ "conf":{
"spark.jars": "s3://p8-fruits/libs/spark-deep-learning-1.5.0-spark2.4-s_2.11.jar"
}
}
这没有引发任何错误,但是我仍然无法使用它。当我尝试import sparkdl
时,我得到了ModuleNotFoundError: No module named 'sparkdl'
。
非常感谢您的帮助!
答案 0 :(得分:0)
首先,您可以在 spark.jars.packages
魔法中的 configure
指令中声明依赖项:
%%configure
{
"conf": {
"spark.jars.packages": "databricks:spark-deep-learning:1.5.0-spark2.4-s_2.11"
}
}
这对于常见情况应该足够了。
如果您的 EMR 集群无法访问 jar 存储库,您可能需要手动将 jar 放入 HDFS(假设您的 jar 在 /home/hadoop/libs/
中)
例如
hdfs dfs -put /home/hadoop/libs/spark-deep-learning-1.5.0-spark2.4-s_2.11.jar /libs/spark-deep-learning-1.5.0-spark2.4-s_2.11.jar
并在 jars
指令中传递它:
%%configure -f
{
"jars": ["/libs/spark-deep-learning-1.5.0-spark2.4-s_2.11.jar"]
}