无法通过 Livy 程序化客户端 api 提交 Spark 作业

问题描述

我正在尝试使用通过 java8、spark 2.4.7 实现并通过 Livy 0.7 提交的提交简单字数统计程序。我有三个在本地计算机上运行的容器。一种用于 Spark 驱动程序,一种用于 Spark 工作器,一种用于 Livy。

我使用 Livy 的客户端提交程序如下:

private static final String LIVY_URL = "http://localhost:8998/";
private static final String JAR_PATH = "/.../spark-word-count/target/word-count-0.1- 
SNAPSHOT.jar";

public static void main(String[] args) throws Exception {
    LivyClient livyClient = new LivyClientBuilder(false)
    .setURI(new URI(LIVY_URL)).build();
    
    try {
        System.err.printf("Uploading %s to the Spark context...\n",JAR_PATH);
        livyClient.uploadJar(new File(JAR_PATH)).get();
        
        System.err.printf("Running JavaWordCount...\n",JAR_PATH);
        double returnValue = livyClient.submit(new JavaWordCount()).get();
      
        System.out.println("Application return value is: " + returnValue);
      } finally {
        livyClient.stop(true);
      }
}

我收到以下错误

由:java.io.IOException: Bad Request: {"msg":"requirement 失败:本地路径 /root/.livy-sessions/b78e9935-70b4-4fe7-8840-8c84067fbd52/word-count-0.1-SNAPSHOT.jar 无法添加用户会话中。"}

查看 Livy 的 UI,我可以看到会话开始, 当我附加到 Livy 正在运行的容器时,我可以看到我的 Jar 上传到 /root/.livy-sessions,但随后失败并出现上述错误

我使用的 docker-compose 文件将 LIVY_FILE_LOCAL_DIR_WHITELIST 指向 /opt/jars。 我看到有人建议将其更改为 Jar 上传到的位置,我确实将其更改为 /root/.livy-sessions,但我遇到了其他一些错误

线程“main”中的异常java.util.concurrent.ExecutionException: java.io.IOException:内部服务器错误: "java.util.concurrent.ExecutionException: java.lang.RuntimeException: py4j.Py4JException: 获取新的通信通道时出错

我将非常感谢您的帮助!谢谢...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)