From e469a8e0a7d680fc65bb464581b5cdfc461e17b3 Mon Sep 17 00:00:00 2001 From: "jiafeng.zhang" Date: Mon, 31 Jul 2023 11:47:24 +0800 Subject: [PATCH] doris writer url decoder fix --- .../doriswriter/DorisStreamLoadObserver.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/doriswriter/src/main/java/com/alibaba/datax/plugin/writer/doriswriter/DorisStreamLoadObserver.java b/doriswriter/src/main/java/com/alibaba/datax/plugin/writer/doriswriter/DorisStreamLoadObserver.java index 6f7e9a5a..deb7ada4 100644 --- a/doriswriter/src/main/java/com/alibaba/datax/plugin/writer/doriswriter/DorisStreamLoadObserver.java +++ b/doriswriter/src/main/java/com/alibaba/datax/plugin/writer/doriswriter/DorisStreamLoadObserver.java @@ -20,6 +20,7 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; +import java.net.URLDecoder; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.HashMap; @@ -47,6 +48,18 @@ public class DorisStreamLoadObserver { this.options = options; } + public String urlDecode(String outBuffer) { + String data = outBuffer; + try { + data = data.replaceAll("%(?![0-9a-fA-F]{2})", "%25"); + data = data.replaceAll("\\+", "%2B"); + data = URLDecoder.decode(data, "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } + return data; + } + public void streamLoad(WriterTuple data) throws Exception { String host = getLoadHost(); if(host == null){ @@ -60,6 +73,7 @@ public class DorisStreamLoadObserver { .append("/_stream_load") .toString(); LOG.info("Start to join batch data: rows[{}] bytes[{}] label[{}].", data.getRows().size(), data.getBytes(), data.getLabel()); + loadUrl = urlDecode(loadUrl); Map loadResult = put(loadUrl, data.getLabel(), addRows(data.getRows(), data.getBytes().intValue())); LOG.info("StreamLoad response :{}",JSON.toJSONString(loadResult)); final String keyStatus = "Status";