我正试图通过青睐来提交火花工作。 在工作中,我需要在调用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网址。
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"));
}
答案 0 :(得分:0)
在Livy rest API中,args是应用程序的命令行参数。它基本上是一个字符串数组,但是在您的情况下,您正在传递一个json数组。下面是rest API调用中的spark-submit命令和args参数的示例。
spark-submit --class className hdfs://some.jar myname 101
args : [ "myname", "101" ]