在IntelliJ IDEA上从YARN运行Apache Spark程序

11

我已经搭建好了运行于YARN(Hadoop-2.5.2)的Apache Spark 1.1.1。使用spark-submit命令,我可以运行程序。

我正在使用IntelliJ IDEA 14,能够构建程序并使用spark-submit运行生成的jar包。

然而,我想知道是否有可能直接从IntelliJ中运行整个程序?我已经添加了必要的库并启用了hadoop-2.4配置文件,但最终出现以下错误:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.security.UserGroupInformation.getCredentials()Lorg/apache/hadoop/security/Credentials;
at org.apache.spark.deploy.yarn.ClientBase$class.$init$(ClientBase.scala:58)
at org.apache.spark.deploy.yarn.Client.<init>(Client.scala:37)
at org.apache.spark.deploy.yarn.Client.<init>(Client.scala:43)
at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:91)
at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:141)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:333)
at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:53)
at WordCountWorkFlow.main(WordCountWorkFlow.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

有人可以告诉我我错在哪里吗?


1
不,我没有。现在,我正在构建我的项目的构件,并使用spark-submit运行它。 - aps
1
顺便问一下,当你构建工件时,你都做了哪些步骤?你包括依赖关系吗?对我来说,一个简单的jar最终变成了100MB... - Stephane Maarek
1
请看这里:https://dev59.com/umEi5IYBdhLWcg3wPadi - Barak1731475
你是使用sbt还是maven来构建包? - Ajay Gupta
你可以使用 sc.getConf.setMaster("local") - Avihoo Mamka
显示剩余2条评论
1个回答

1
在Intellij中,您需要添加依赖项,这是您的Hadoop conf目录的路径。
进入项目设置,在依赖项中添加路径$HADOOP_HOME/etc/hadoop。
如果您正在使用任何lambda,则从项目设置->源->语言级别设置8-lambda类型注释。enter image description here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接