pyspark - 如何在 EMR 笔记本中安装 .jar 依赖项?
问题描述
我正在运行 EMR 笔记本(平台:AWS,笔记本:jupyter,内核:PySpark)。我需要安装一个 .jar 依赖项 ( sparkdl
) 来处理一些图像。
使用 Spark-submit,我可以使用:
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 笔记本上做同样的事情呢?
- 我可以使用引导程序将其安装在每个节点上。但我不知道该怎么做……</li>
- 我可以配置 SparkSession 以使用依赖项。但笔记本似乎无法访问存储库……我也不知道让它加载复制到 S3 存储桶上的文件的语法……</li>
编辑:我试过
%%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'
。
非常感谢您的帮助 !
解决方案
首先,您可以在魔术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"]
}
推荐阅读
- powershell - Get-ADUser - 从 SZ 中过滤姓氏,以反向 alpha 顺序列出
- python - 如何计算每个嵌套列表的项目频率?
- php - 如何限制对 html 文件的访问
- android - Android Studio - 无法解析 com.android.tools.build:gradle:3.5.2
- postgresql - Google PostGIS - ogr2ogr 无法打开数据源
- scala - scala中递归函数中的类型不匹配错误
- spring - 如何托管 Spring Boot 应用程序
- spring-boot-admin - 将 Spring Boot 管理服务器设置为 2 节点集群时两次收到电子邮件和 Microsoft Teams 通知
- mysql - MySql中PASSWORD函数的替代品是什么
- typo3 - TYPO3 Image Viewhelper 在 FAL 图像上设置水印