This is an automated email from the ASF dual-hosted git repository. zirui pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push: new 4bb55ffdf [INLONG-6823][Sort] Parse the epoch date to normal date for Doris sink (#6832) 4bb55ffdf is described below commit 4bb55ffdf8859d2cc40b7ad7867cd3e5402a92e4 Author: Yizhou Yang <32808678+yizhou-y...@users.noreply.github.com> AuthorDate: Fri Dec 16 19:24:02 2022 +0800 [INLONG-6823][Sort] Parse the epoch date to normal date for Doris sink (#6832) --- .../doris/table/DorisDynamicSchemaOutputFormat.java | 4 ++++ .../inlong/sort/doris/util/DorisParseUtils.java | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/table/DorisDynamicSchemaOutputFormat.java b/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/table/DorisDynamicSchemaOutputFormat.java index e5aeec53a..3e1e59a64 100644 --- a/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/table/DorisDynamicSchemaOutputFormat.java +++ b/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/table/DorisDynamicSchemaOutputFormat.java @@ -251,6 +251,10 @@ public class DorisDynamicSchemaOutputFormat<T> extends RichOutputFormat<T> { this.fieldGetters = new RowData.FieldGetter[logicalTypes.length]; for (int i = 0; i < logicalTypes.length; i++) { fieldGetters[i] = RowData.createFieldGetter(logicalTypes[i], i); + if ("DATE".equalsIgnoreCase(logicalTypes[i].toString())) { + int finalI = i; + fieldGetters[i] = row -> DorisParseUtils.epochToDate(row.getInt(finalI)); + } } } diff --git a/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/util/DorisParseUtils.java b/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/util/DorisParseUtils.java index 81f82762d..d5cc32169 100644 --- a/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/util/DorisParseUtils.java +++ b/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/util/DorisParseUtils.java @@ -18,6 +18,8 @@ package org.apache.inlong.sort.doris.util; import org.apache.flink.types.RowKind; + +import java.time.LocalDate; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -67,4 +69,23 @@ public class DorisParseUtils { return buf.toString(); } + /** + * A utility used to change epoch dates into normal dates + * <p/> + * Example input: 0 + * Example output: 1970-01-01 + * + * @param obj the epoch date that is either long or int + * @return the transformed local date + */ + public static LocalDate epochToDate(Object obj) { + if (obj instanceof Long) { + return LocalDate.ofEpochDay((Long) obj); + } + if (obj instanceof Integer) { + return LocalDate.ofEpochDay((Integer) obj); + } + throw new IllegalArgumentException( + "Convert to LocalDate failed from unexpected value '" + obj + "' of type " + obj.getClass().getName()); + } }