在 IntelliJ 上添加对远程 spark 的依赖

Posted

技术标签:

【中文标题】在 IntelliJ 上添加对远程 spark 的依赖【英文标题】:Add dependency to remote spark on intelliJ 【发布时间】:2016-02-23 07:33:09 【问题描述】:

我在 IntelliJ 中远程运行 spark,但在向 spark conf 添加依赖时遇到了困难。

val conf = new SparkConf()
    .setMaster("spark://IP:7077")
    .set("packages", "com.databricks:spark-avro_2.10:2.0.1:jar")
    .setAppName("localtrial")

错误:

16/02/23 12:27:10 WARN TaskSetManager:在阶段 0.0 中丢失任务 0.0(TID 0,172.16.248.156):java.lang.ClassNotFoundException:com.databricks.spark.avro.AvroRelation$$anonfun$ buildScan$1$$anonfun$3 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) ```

我也尝试过 conf 类的 setJars 属性。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您需要将依赖项添加到您的 build.sbt 文件中,以便 IntelliJ 可以针对它进行编译。如果您将它作为参数添加到spark-submit,那么您可以将依赖项设置为prodived,否则您需要使用 sbt-assembly 或类似插件将其打包到您的 jar 文件中。

将以下行添加到您的 build.sbt 文件中,如果启用了自动导入,Intellij 将下载依赖项。如果未启用自动导入,请关闭项目并再次导入或使用 SBT 工具窗口中的刷新按钮。

libraryDependencies += "com.databricks" %% "spark-avro" % "2.0.1" % "provided"

【讨论】:

以上是关于在 IntelliJ 上添加对远程 spark 的依赖的主要内容,如果未能解决你的问题,请参考以下文章

Spark应用远程调试

如何从 IntelliJ IDEA 向远程 Spark 集群提交代码

使用 IntelliJ idea 的 Scala 工作表作为 Apache Spark 的 Scala REPL

GAE项目Intellij远程调试在关闭时不释放端口

Spark远程调试IDE调试

使用 spark sql 在 intelliJ 上出现不相关的模棱两可的方法调用错误