diff --git a/initializer-service/src/main/java/com/schbrain/initializer/service/StarrocksService.java b/initializer-service/src/main/java/com/schbrain/initializer/service/StarrocksService.java new file mode 100644 index 0000000000000000000000000000000000000000..ef2086c6bc5664aea902499355c27cec022192c3 --- /dev/null +++ b/initializer-service/src/main/java/com/schbrain/initializer/service/StarrocksService.java @@ -0,0 +1,11 @@ +package com.schbrain.initializer.service; + +/** + * @author liaozan + * @since 2023/11/27 + */ +public interface StarrocksService { + + boolean streamLoad(String tableName, Object content); + +} diff --git a/initializer-service/src/main/java/com/schbrain/initializer/service/config/StarrocksProperties.java b/initializer-service/src/main/java/com/schbrain/initializer/service/config/StarrocksProperties.java new file mode 100644 index 0000000000000000000000000000000000000000..e05188cf3eb2b791343dfb22692c94a1dfa813d8 --- /dev/null +++ b/initializer-service/src/main/java/com/schbrain/initializer/service/config/StarrocksProperties.java @@ -0,0 +1,16 @@ +package com.schbrain.initializer.service.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * @author liaozan + * @since 2023/11/23 + */ +@Data +@ConfigurationProperties(prefix = "starrocks") +public class StarrocksProperties { + + private String feServerUrl = "schbrain-fe-svc.starrocks:8030"; + +} diff --git a/initializer-service/src/main/java/com/schbrain/initializer/service/impl/StarrocksServiceImpl.java b/initializer-service/src/main/java/com/schbrain/initializer/service/impl/StarrocksServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..c16e0103899fac4e03497007cd780d8bb65e7ac1 --- /dev/null +++ b/initializer-service/src/main/java/com/schbrain/initializer/service/impl/StarrocksServiceImpl.java @@ -0,0 +1,47 @@ +package com.schbrain.initializer.service.impl; + +import cn.hutool.http.HttpRequest; +import com.fasterxml.jackson.databind.JsonNode; +import com.schbrain.common.util.JacksonUtils; +import com.schbrain.initializer.service.StarrocksService; +import com.schbrain.initializer.service.config.StarrocksProperties; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author liaozan + * @since 2023/11/27 + */ +@Slf4j +@Service +public class StarrocksServiceImpl implements StarrocksService { + + private static final String STREAM_LOAD_TEMPLATE = "http://%s/api/schbrain_mosaic/%s/_stream_load"; + + @Autowired + private StarrocksProperties starrocksProperties; + + @Override + public boolean streamLoad(String tableName, Object content) { + String streamLoadUrl = getStreamLoadUrl(tableName); + String res = HttpRequest.put(streamLoadUrl) + .header("strict_mode", Boolean.TRUE.toString()) + .header("Expect", "100-continue") + .header("format", "json") + .basicAuth("mosaic_admin", "schbrain111623") + .setFollowRedirects(true) + .body(JacksonUtils.toJsonString(content)) + .execute() + .body(); + System.out.println(res); + JsonNode loadResponse = JacksonUtils.getJsonNode(res); + log.info("stream load response: {}", loadResponse); + return true; + } + + private String getStreamLoadUrl(String tableName) { + return String.format(STREAM_LOAD_TEMPLATE, starrocksProperties.getFeServerUrl(), tableName); + } + +} diff --git a/initializer-starter/src/main/java/com/schbrain/initializer/Application.java b/initializer-starter/src/main/java/com/schbrain/initializer/Application.java index fa71068e8ee31eff1661a75cfcf0a2760363e577..a8455caa8f28bb0c291a80b04120d86d3aeac687 100644 --- a/initializer-starter/src/main/java/com/schbrain/initializer/Application.java +++ b/initializer-starter/src/main/java/com/schbrain/initializer/Application.java @@ -1,13 +1,32 @@ package com.schbrain.initializer; +import com.schbrain.initializer.service.StarrocksService; +import com.schbrain.initializer.service.config.StarrocksProperties; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import java.util.Map; + +@RestController @SpringBootApplication +@EnableConfigurationProperties(StarrocksProperties.class) public class Application { + @Autowired + private StarrocksService starrocksService; + public static void main(String[] args) { SpringApplication.run(Application.class, args); } -} \ No newline at end of file + @GetMapping("/load") + public void doLoad() { + Map content = Map.of("id", "1", "city", "name"); + starrocksService.streamLoad("test", content); + } + +}