我已经可以从Eclipse IDE提交AssertOpenGL;
screenNo = max(Screen('Screens'));
screenRes = [0 0 640 480];
Screen('Preference', 'SkipSyncTests', 2);
ListenChar(2);
[win, rect] = Screen('OpenWindow', screenNo, [0 0 0], screenRes);
[width, height]=Screen('WindowSize', win);
[x,y] = RectCenter(rect);
% compute poly coordinates
polyWidth = 250;
polyHeight = 250;
xCoord = [x, x - (polyWidth/2), x, x + (polyWidth/2)]';
yCoord = [y + (polyHeight /2), y, y - (polyHeight /2), y]';
polyCoords = [xCoord yCoord];
Screen('FramePoly', win, [255 255 255], polyCoords, 3);
Screen('Flip', win);
KbWait;
sca;
个火花作业(用Scala编写)。但是,我想修改我的Spark上下文(在我的应用程序中),这样当我' Run'应用程序(在Eclipse内部),作业将使用Yarn作为资源管理器发送到我的远程集群。
使用local
,我可以成功将作业提交到群集:
spark-submit
我想在IDE中实现相同的结果。
我的sbt配置(app根目录)看起来像:
spark-submit --class <main class> --master yarn-cluster <jar>
在我的应用内:
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.1"
libraryDependencies += "org.apache.spark" %% "spark-yarn" % "1.5.1" % "provided"
但是,我收到以下错误:
val conf = new SparkConf().setAppName("xxx").setMaster("yarn-cluster")
答案 0 :(得分:3)
1)根据我进行的研究,当您从Eclipse远程提交时,不能使用yarn-cluster
作为代码的主人,而是使用spark-client
。
new SparkConf().setAppName("test-app").setMaster("yarn-client");
检查这个Cloudera资源,他们正在粉碎可能存在的约束,阻止您在群集模式下运行“交互式”应用程序。
2)您可能遇到资源未正确复制到群集的问题。什么解决了我的问题,在项目的类路径中包含以下文件(没有任何想象力,现在我只是将它们复制到项目的src / java目录中):
确保特别是core-site.xml在类路径中,因为我读过的所有教程都没有提到它。你会遇到麻烦,因为没有fs.defaultFS
配置,Spark会认为目标目录与源(本地文件系统)相同,而不是远程HDFS文件系统。