This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 3c18efd  [INLONG-716] set terminated symbol when create hive table
3c18efd is described below

commit 3c18efd77fc6811735596f6e87ff287e36e05fd4
Author: healzhou <[email protected]>
AuthorDate: Sun Jul 11 00:52:40 2021 +0800

    [INLONG-716] set terminated symbol when create hive table
---
 .../manager/service/core/impl/StorageHiveOperation.java    | 14 ++++++++++++++
 .../manager/service/thirdpart/hive/HiveTableOperator.java  |  6 ++++++
 .../thirdpart/hive/builder/HiveTableCreateSqlBuilder.java  |  7 +++++--
 .../thirdpart/sort/PushHiveConfigToSortEventListener.java  |  9 ++++-----
 4 files changed, 29 insertions(+), 7 deletions(-)

diff --git 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/StorageHiveOperation.java
 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/StorageHiveOperation.java
index 9bdd6bb..2b79351 100644
--- 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/StorageHiveOperation.java
+++ 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/impl/StorageHiveOperation.java
@@ -20,6 +20,7 @@ package org.apache.inlong.manager.service.core.impl;
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import java.nio.charset.StandardCharsets;
 import java.util.Date;
 import java.util.List;
 import org.apache.commons.collections.CollectionUtils;
@@ -36,9 +37,11 @@ import 
org.apache.inlong.manager.common.pojo.datastorage.StorageHiveListVO;
 import org.apache.inlong.manager.common.pojo.datastorage.StoragePageRequest;
 import org.apache.inlong.manager.common.util.CommonBeanUtils;
 import org.apache.inlong.manager.common.util.Preconditions;
+import org.apache.inlong.manager.dao.entity.DataStreamEntity;
 import org.apache.inlong.manager.dao.entity.StorageExtEntity;
 import org.apache.inlong.manager.dao.entity.StorageHiveEntity;
 import org.apache.inlong.manager.dao.entity.StorageHiveFieldEntity;
+import org.apache.inlong.manager.dao.mapper.DataStreamEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StorageExtEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StorageHiveEntityMapper;
 import org.apache.inlong.manager.dao.mapper.StorageHiveFieldEntityMapper;
@@ -62,6 +65,8 @@ public class StorageHiveOperation extends 
StorageBaseOperation {
     private StorageExtEntityMapper storageExtMapper;
     @Autowired
     private StorageHiveFieldEntityMapper hiveFieldMapper;
+    @Autowired
+    private DataStreamEntityMapper dataStreamMapper;
 
     /**
      * Save HIVE storage information
@@ -80,6 +85,15 @@ public class StorageHiveOperation extends 
StorageBaseOperation {
         StorageHiveInfo hiveInfo = (StorageHiveInfo) storageInfo;
         StorageHiveEntity entity = CommonBeanUtils.copyProperties(hiveInfo, 
StorageHiveEntity::new);
 
+        // Set the encoding type and field splitter
+        DataStreamEntity streamEntity = 
dataStreamMapper.selectByIdentifier(bid, entity.getDataStreamIdentifier());
+        String encodingType = streamEntity.getDataEncoding() == null
+                ? StandardCharsets.UTF_8.displayName() : 
streamEntity.getDataEncoding();
+        entity.setEncodingType(encodingType);
+        if (entity.getFieldSplitter() == null) {
+            entity.setFieldSplitter(streamEntity.getFileDelimiter());
+        }
+
         entity.setStatus(EntityStatus.DATA_STORAGE_NEW.getCode());
         entity.setCreator(operator);
         entity.setModifier(operator);
diff --git 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/hive/HiveTableOperator.java
 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/hive/HiveTableOperator.java
index 8be5502..d3313bc 100644
--- 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/hive/HiveTableOperator.java
+++ 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/hive/HiveTableOperator.java
@@ -33,6 +33,7 @@ import 
org.apache.inlong.manager.dao.mapper.StorageHiveFieldEntityMapper;
 import org.apache.inlong.manager.service.core.DataSourceService;
 import org.apache.inlong.manager.service.core.StorageService;
 import org.apache.inlong.manager.workflow.exception.WorkflowException;
+import org.apache.inlong.sort.protocol.sink.HiveSinkInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -115,6 +116,11 @@ public class HiveTableOperator {
 
         HiveTableQueryBean queryBean = new HiveTableQueryBean();
         queryBean.setColumns(columnQueryBeans);
+        // set terminated symbol
+        if (hiveConfig.getFieldSplitter() != null) {
+            char ch = (char) Integer.parseInt(hiveConfig.getFieldSplitter());
+            queryBean.setFieldTerSymbol(String.valueOf(ch));
+        }
         queryBean.setUsername(hiveConfig.getUserName());
         queryBean.setPassword(hiveConfig.getPassword());
         queryBean.setTableName(hiveConfig.getTableName());
diff --git 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/hive/builder/HiveTableCreateSqlBuilder.java
 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/hive/builder/HiveTableCreateSqlBuilder.java
index 3282ad4..d04515a 100644
--- 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/hive/builder/HiveTableCreateSqlBuilder.java
+++ 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/hive/builder/HiveTableCreateSqlBuilder.java
@@ -32,10 +32,14 @@ public class HiveTableCreateSqlBuilder extends 
SqlBuilder<HiveTableQueryBean> {
         ddl.append("CREATE TABLE ").append(dbTableName);
         // Construct columns and partition columns
         ddl.append(this.buildColumnsAndComments(table.getColumns(), 
table.getTableDesc()));
+        // Set TERMINATED symbol
+        if (table.getFieldTerSymbol() != null) {
+            ddl.append(" ROW FORMAT DELIMITED FIELDS TERMINATED BY 
'").append(table.getFieldTerSymbol()).append("'");
+        }
         return ddl.toString();
     }
 
-    // (col_name data_type [COMMENT col_comment],col_name data_type [COMMENT 
col_comment]....)
+    // (col_name data_type [COMMENT col_comment], col_name data_type [COMMENT 
col_comment]....)
     private String buildColumnsAndComments(List<HiveColumnQueryBean> columns, 
String tableComment) {
         List<String> columnInfoList = new ArrayList<>();
         List<String> partitionList = new ArrayList<>();
@@ -69,5 +73,4 @@ public class HiveTableCreateSqlBuilder extends 
SqlBuilder<HiveTableQueryBean> {
         return "CREATE_TABLE_HIVE";
     }
 
-
 }
diff --git 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/sort/PushHiveConfigToSortEventListener.java
 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/sort/PushHiveConfigToSortEventListener.java
index 4b35ea7..a7831b5 100644
--- 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/sort/PushHiveConfigToSortEventListener.java
+++ 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdpart/sort/PushHiveConfigToSortEventListener.java
@@ -146,12 +146,9 @@ public class PushHiveConfigToSortEventListener implements 
TaskEventListener {
                 .toString();
 
         // Encapsulate the deserialization information in the source
-        DataStreamInfo dataStream = 
dataStreamService.get(hiveStorage.getBusinessIdentifier(),
-                hiveStorage.getDataStreamIdentifier());
-
         HiveSinkInfo.HiveFileFormat fileFormat = new 
HiveSinkInfo.TextFileFormat(',');
-        if (dataStream.getFileDelimiter() != null) {
-            char c = (char) Integer.parseInt(dataStream.getFileDelimiter());
+        if (hiveStorage.getFieldSplitter() != null) {
+            char c = (char) Integer.parseInt(hiveStorage.getFieldSplitter());
             fileFormat = new HiveSinkInfo.TextFileFormat(c);
         }
 
@@ -170,6 +167,8 @@ public class PushHiveConfigToSortEventListener implements 
TaskEventListener {
         );
 
         // data stream fields
+        DataStreamInfo dataStream = 
dataStreamService.get(hiveStorage.getBusinessIdentifier(),
+                hiveStorage.getDataStreamIdentifier());
         Stream<FieldInfo> streamFields = 
dataStream.getFieldList().stream().map(field -> {
             FormatInfo formatInfo = 
SortFieldFormatUtils.convertFieldFormat(field.getFieldType().toLowerCase());
             return new FieldInfo(field.getFieldName(), formatInfo);

Reply via email to