gpt4 book ai didi

java - 在 Java 中将 JSON 参数作为 livy 参数发送

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:18 25 4
gpt4 key购买 nike

我正在尝试通过 livy 提交 Spark 作业。在工作中,我需要在调用 livy 时在 args 参数中发布 json 数据。这就是我所做的

String payload = "{\"name\": \"myname\", \"id\": \"101\"}";
String data="{ \"file\":\"hdfs://some.jar\" ,\"className\":\"someclass\",\"args\":["+"\""+payload+"\""+"], \"proxyUser\":\"clsadmin\"}";
String[] command = {"curl", "-v","-g", "-u" ,"id:pwd", "-H", "Content-Type:application/json" , "-H", "X-Requested-By:livy" , url ,"--data", data};

它不起作用。现在,如果我将有效负载更改为此。它可以工作。

String payload = "{\\\"name\\\": \\\"myname\\\", \\\"id\\\": \\\"101\\\"}";

如何避免在有效负载中使用 3 个反斜杠?有没有更好的方法来做到这一点。我正在使用curl 来调用livy url。

Process p = process.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuilder builder = new StringBuilder();
String line = null;
while ( (line = reader.readLine()) != null)
{
builder.append(line);
builder.append(System.getProperty("line.separator"));
}

最佳答案

在 Livy Rest API 中,args 是应用程序的命令行参数。它基本上是字符串数组,但在您的场景中,您传递的是 json 数组。下面是 Spark-submit 命令和 REST API 调用中的 args 参数的示例。

spark-submit --class className hdfs://some.jar myname 101

args : [ "myname", "101" ]

关于java - 在 Java 中将 JSON 参数作为 livy 参数发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54988239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com