背景:
dolphinscheduler 3.14
zepplin 0.8.2
bug1: json解析問題:
[INFO] 2023-03-31 11:33:28.312 +0800 - zeppelin version: 0.8.2
[INFO] 2023-03-31 11:33:28.312 +0800 - Success initialized task plugin instance success
[INFO] 2023-03-31 11:33:28.313 +0800 - Success set taskVarPool: null
[ERROR] 2023-03-31 11:33:28.448 +0800 - zeppelin task submit failed with error
kong.unirest.json.JSONException: JSONObject["progress"] not found.
at kong.unirest.json.JSONObject.getProperty(JSONObject.java:954)
at kong.unirest.json.JSONObject.lambda$getInt$11(JSONObject.java:485)
at kong.unirest.json.JSONObject.tryNumber(JSONObject.java:961)
at kong.unirest.json.JSONObject.getInt(JSONObject.java:485)
at org.apache.zeppelin.client.ParagraphResult.<init>(ParagraphResult.java:48)
at org.apache.zeppelin.client.ZeppelinClient.queryParagraphResult(ZeppelinClient.java:782)
at org.apache.zeppelin.client.ZeppelinClient.submitParagraph(ZeppelinClient.java:676)
at org.apache.zeppelin.client.ZeppelinClient.executeParagraph(ZeppelinClient.java:602)
at org.apache.zeppelin.client.ZeppelinClient.executeParagraph(ZeppelinClient.java:618)
at org.apache.dolphinscheduler.plugin.task.zeppelin.ZeppelinTask.handle(ZeppelinTask.java:131)
at org.apache.dolphinscheduler.server.worker.runner.DefaultWorkerDelayTaskExecuteRunnable.executeTask(DefaultWorkerDelayTaskExecuteRunnable.java:49)
源碼修改:
bug2:沒有地方配置zeppelin賬號密碼登陸:
解決方案:
在 getZeppelinClient 方法裏面寫登陸邏輯,調用 zeppelinClient.login方法。根據傳入的參數獲取用戶名密碼。
不過這樣需要編譯ds源碼,然後替換掉jar
解決方案2:org.apache.zeppelin.client.ZeppelinClient.ZeppelinClient(ClientConfig) 方法裏面寫登陸邏輯
sdk登陸代碼案例:
package org.zeppelin;
import java.util.HashMap;
import java.util.Map;
import org.apache.zeppelin.client.ClientConfig;
import org.apache.zeppelin.client.ParagraphResult;
import org.apache.zeppelin.client.ZeppelinClient;
public class ZeppelinTest {
public static void main(String[] args) throws Exception {
ClientConfig clientConfig = new ClientConfig("http://fun03:28080");
ZeppelinClient zClient = new ZeppelinClient(clientConfig);
zClient.login("hadoop", "");
String zeppelinVersion = zClient.getVersion();
System.out.println("Zeppelin version: " + zeppelinVersion);
// execute note 2A94M5J1Z paragraph by paragraph
try {
//ParagraphResult paragraphResult = zClient.executeParagraph("2HXQ8YRYN", "20230330-101251_25695257");
ParagraphResult paragraphResult = zClient.executeParagraph("2HXQ8YRYN","20230330-101251_25695257");
System.out.println("Execute the 1st spark tutorial paragraph, paragraph result: " + paragraphResult);
/*paragraphResult = zClient.executeParagraph("2A94M5J1Z", "20150210-015302_1492795503");
System.out.println("Execute the 2nd spark tutorial paragraph, paragraph result: " + paragraphResult);
Map<String, String> parameters = new HashMap<>();
parameters.put("maxAge", "40");
paragraphResult = zClient.executeParagraph("2A94M5J1Z", "20150212-145404_867439529", parameters);
System.out.println("Execute the 3rd spark tutorial paragraph, paragraph result: " + paragraphResult);
parameters = new HashMap<>();
parameters.put("marital", "married");
paragraphResult = zClient.executeParagraph("2A94M5J1Z", "20150213-230422_1600658137", parameters);
*/ System.out.println("Execute the 4th spark tutorial paragraph, paragraph result: " + paragraphResult);
System.out.println("");
} finally {
// you need to stop interpreter explicitly if you are running paragraph
// separately.
//zClient.stopInterpreter("2A94M5J1Z", "spark");
}
}
}