我创建了一个包含本地Maven存储库的aws AMI,它位于/ usr / local /
然后我使用该AMI创建带有Spark和Zeppelin的AWS EMR集群。
当我使用pyspark --packages导入jar包时,EMR实例在/ home / hadoop中创建一个.ivy目录。 Zeppellin将在/ var / lib / zeppelin / local-repo
中创建一个名称为ID的目录我如何指向pyspark,spark和Zeppelin使用我的本地Maven存储库(/usr/local/.m2/repository)而不是创建.ivy目录并从mave Central下载jars?
我知道我可以使用pyspark --jars /local/path/to/jar.jar
从本地路径导入jar并复制到.ivy目录,但是我宁愿使用spark和zeppelin来使用本地maven存储库。
此外,如果我在spark-default.conf中设置spark.driver.extraClassPath
和spark.executor.extraClassPath
/usr/local/.m2/repository/*,将能够在这些目录中查找jar(因为inisde目录不包含.jar标记,例如/usr/local/.m2/repository/groupId/artifactId/version/name.jar)
答案 0 :(得分:0)
您应该能够动态加载依赖项,例如:
%spark.dep
// add maven repository
z.addRepo("RepoName").url("RepoURL")
// add maven snapshot repository
z.addRepo("RepoName").url("RepoURL").snapshot()
// add credentials for private maven repository
z.addRepo("RepoName").url("RepoURL").username("username").password("password")
// add artifact from filesystem
z.load("/path/to.jar")
// add artifact from maven repository
z.load("groupId:artifactId:version")
查看文档以获取更多详细信息: https://zeppelin.apache.org/docs/latest/interpreter/spark.html#3-dynamic-dependency-loading-via-sparkdep-interpreter