【问题标题】:How to install .jar dependency in EMR notebooks?如何在 EMR 笔记本中安装 .jar 依赖项?
【发布时间】:2020-04-09 20:45:42
【问题描述】:

我正在运行 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 笔记本上做同样的事情呢?

  1. 我可以使用引导程序在每个节点上安装它。但我不知道该怎么做……
  2. 我可以配置 SparkSession 以使用依赖项。但是笔记本似乎无法访问存储库……而且我不知道让它加载复制到 S3 存储桶上的文件的语法……

编辑: 我试过了

%%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'。

非常感谢您的帮助!

【问题讨论】:

标签: pyspark jupyter-notebook dependencies amazon-emr


【解决方案1】:

首先,您可以在configuremagic 中的spark.jars.packages 指令中声明依赖关系:

%%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"]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2019-07-08
    • 1970-01-01
    • 2019-10-24
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多