如何部署在群集上使用Spark-Shell中使用的Scala文件



我正在使用spark-shell来学习目的,为此,我创建了几个包含常用代码的Scala文件,例如类定义。我通过调用shell中的":load"命令来使用这些文件。现在,我想在纱线群集模式下使用spark-shell。我使用spark-shell --master yarn --deploy-mode client开始。外壳没有任何问题开始,但是当我尝试运行":加载"加载的代码时,我会得到执行错误。

 17/05/04 07:59:36 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container marked as failed: container_e68_1493271022021_0168_01_000002 on host: xxxw03.mine.de. Exit status: 50. Diagnostics: Exception from container-launch.
Container id: container_e68_1493271022021_0168_01_000002
Exit code: 50
Stack trace: ExitCodeException exitCode=50:
        at org.apache.hadoop.util.Shell.runCommand(Shell.java:933)
        at org.apache.hadoop.util.Shell.run(Shell.java:844)
        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1123)
        at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:225)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:317)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:83)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

我认为我将不得不将加载在外壳中的代码共享给工人。但是我必须如何做?

spark-shell对于快速测试很有用,但是一旦您了解了要做什么并将完整的程序放在一起,就会有用。

您现在可能想继续使用spark-submit命令。请参阅提交应用程序的文档

使用此命令您提供一个JAR文件而不是单个类文件。

./bin/spark-submit 
  --class <main-class> 
  --master <master-url> 
  --deploy-mode <deploy-mode> 
  --conf <key>=<value> 
  ... # other options
  <application-jar> 
  [application-arguments]

<main-class>是您类的Java样式路径,例如com.example.MyMainClass <application-jar>是包含项目中类的JAR文件的途径,其他参数如上所述的链接上的记录,但这两个是如何将代码提供给群集的两个关键区别。

相关内容

  • 没有找到相关文章

最新更新