Commit 773fe96f authored by 375138141's avatar 375138141

kingbase

parent 418dd22d
This diff is collapsed.
...@@ -15,6 +15,7 @@ import org.slf4j.LoggerFactory; ...@@ -15,6 +15,7 @@ import org.slf4j.LoggerFactory;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -166,15 +167,15 @@ public class AsyncDbDataTransferFunction extends RichAsyncFunction<JSONObject,St ...@@ -166,15 +167,15 @@ public class AsyncDbDataTransferFunction extends RichAsyncFunction<JSONObject,St
List<String> valueList = new ArrayList<>(); List<String> valueList = new ArrayList<>();
List<String> updateList = new ArrayList<>(); List<String> updateList = new ArrayList<>();
for (String s : columnSet) { for (String s : columnSet) {
colBuilder.append(s).append(","); colBuilder.append("\"").append(s).append("\",");
valueList.add(getValueStringKingbase(dataObj, s, mysqlType.getString(s))); valueList.add(getValueStringKingbase(dataObj, s, mysqlType.getString(s)));
updateList.add(s + " = EXCLUDED." + s); updateList.add("\"" + s + "\" = EXCLUDED.\"" + s + "\"");
} }
colBuilder.setLength(colBuilder.length() - 1); colBuilder.setLength(colBuilder.length() - 1);
String valueString = String.join(",", valueList); String valueString = String.join(",", valueList);
String updateString = String.join(",", updateList); String updateString = String.join(",", updateList);
List<String> pkList = new ArrayList<>(pkNameSet); List<String> pkList = new ArrayList<>(pkNameSet);
String pkString = String.join(",", pkList); String pkString = pkList.stream().map(pk -> "\"" + pk + "\"").collect(Collectors.joining(","));
if (pkList.isEmpty()) { if (pkList.isEmpty()) {
return String.format("INSERT INTO %s (%s) values (%s)", table, colBuilder.toString(), valueString); return String.format("INSERT INTO %s (%s) values (%s)", table, colBuilder.toString(), valueString);
} }
......
...@@ -16,6 +16,7 @@ import org.slf4j.LoggerFactory; ...@@ -16,6 +16,7 @@ import org.slf4j.LoggerFactory;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -183,15 +184,15 @@ public class AsyncDbDataTransferFunctionNew extends RichAsyncFunction<JSONObject ...@@ -183,15 +184,15 @@ public class AsyncDbDataTransferFunctionNew extends RichAsyncFunction<JSONObject
List<String> valueList = new ArrayList<>(); List<String> valueList = new ArrayList<>();
List<String> updateList = new ArrayList<>(); List<String> updateList = new ArrayList<>();
for (String s : columnSet) { for (String s : columnSet) {
colBuilder.append(s).append(","); colBuilder.append("\"").append(s).append("\",");
valueList.add(getValueStringKingbase(dataObj, s, mysqlType.getString(s))); valueList.add(getValueStringKingbase(dataObj, s, mysqlType.getString(s)));
updateList.add(s + " = EXCLUDED." + s); updateList.add("\"" + s + "\" = EXCLUDED.\"" + s + "\"");
} }
colBuilder.setLength(colBuilder.length() - 1); colBuilder.setLength(colBuilder.length() - 1);
String valueString = String.join(",", valueList); String valueString = String.join(",", valueList);
String updateString = String.join(",", updateList); String updateString = String.join(",", updateList);
List<String> pkList = new ArrayList<>(pkNameSet); List<String> pkList = new ArrayList<>(pkNameSet);
String pkString = String.join(",", pkList); String pkString = pkList.stream().map(pk -> "\"" + pk + "\"").collect(Collectors.joining(","));
if (pkList.isEmpty()) { if (pkList.isEmpty()) {
return String.format("INSERT INTO %s (%s) values (%s)", table, colBuilder.toString(), valueString); return String.format("INSERT INTO %s (%s) values (%s)", table, colBuilder.toString(), valueString);
} }
......
...@@ -17,6 +17,7 @@ import java.time.LocalDateTime; ...@@ -17,6 +17,7 @@ import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 重构代码 * 重构代码
* @author lww * @author lww
...@@ -151,16 +152,16 @@ public class DbDataTransferFunction extends ProcessFunction<JSONObject, Tuple3<S ...@@ -151,16 +152,16 @@ public class DbDataTransferFunction extends ProcessFunction<JSONObject, Tuple3<S
List<String> valueList = new ArrayList<>(); List<String> valueList = new ArrayList<>();
List<String> updateList = new ArrayList<>(); List<String> updateList = new ArrayList<>();
for (String s : columnSet) { for (String s : columnSet) {
colBuilder.append(s).append(","); colBuilder.append("\"").append(s).append("\",");
String val = getValueStringKingbase(dataObj, s, mysqlType.getString(s)); String val = getValueStringKingbase(dataObj, s, mysqlType.getString(s));
valueList.add(val); valueList.add(val);
updateList.add(s + " = EXCLUDED." + s); updateList.add("\"" + s + "\" = EXCLUDED.\"" + s + "\"");
} }
colBuilder.setLength(colBuilder.length() - 1); colBuilder.setLength(colBuilder.length() - 1);
String valueString = String.join(",", valueList); String valueString = String.join(",", valueList);
String updateString = String.join(",", updateList); String updateString = String.join(",", updateList);
List<String> pkList = new ArrayList<>(pkNameSet); List<String> pkList = new ArrayList<>(pkNameSet);
String pkString = String.join(",", pkList); String pkString = pkList.stream().map(pk -> "\"" + pk + "\"").collect(Collectors.joining(","));
// 若没有主键,退化为普通 INSERT(重复会报错,由下游表约束保证) // 若没有主键,退化为普通 INSERT(重复会报错,由下游表约束保证)
if (pkList.isEmpty()) { if (pkList.isEmpty()) {
return String.format("INSERT INTO %s (%s) values (%s)", table, colBuilder.toString(), valueString); return String.format("INSERT INTO %s (%s) values (%s)", table, colBuilder.toString(), valueString);
......
...@@ -44,11 +44,11 @@ public class DbDataSlideSink extends RichSinkFunction<Tuple6<String,String,Strin ...@@ -44,11 +44,11 @@ public class DbDataSlideSink extends RichSinkFunction<Tuple6<String,String,Strin
String configTidbUrl = String.format(envProps.getDb_url(), envProps.getDb_host(), envProps.getDb_port(), envProps.getDb_database()); String configTidbUrl = String.format(envProps.getDb_url(), envProps.getDb_host(), envProps.getDb_port(), envProps.getDb_database());
//System.out.println(configTidbUrl); //System.out.println(configTidbUrl);
dataSource = new DruidDataSource(); dataSource = new DruidDataSource();
// 驱动类名优先取配置 db_driver,未配置则按方言推断,仍无则默认 MySQL // 驱动类名优先取配置 db_driver,未配置则按方言推断,仍无则默认 Kingbase
String driverClass = envProps.getDb_driver(); String driverClass = envProps.getDb_driver();
if (StrUtil.isBlank(driverClass)) { if (StrUtil.isBlank(driverClass)) {
driverClass = "kingbase".equalsIgnoreCase(envProps.getDb_dialect()) driverClass = "mysql".equalsIgnoreCase(envProps.getDb_dialect())
? "com.kingbase8.Driver" : "com.mysql.cj.jdbc.Driver"; ? "com.mysql.cj.jdbc.Driver" : "com.kingbase8.Driver";
} }
dataSource.setDriverClassName(driverClass); dataSource.setDriverClassName(driverClass);
dataSource.setUsername(envProps.getDb_username()); dataSource.setUsername(envProps.getDb_username());
...@@ -63,8 +63,19 @@ public class DbDataSlideSink extends RichSinkFunction<Tuple6<String,String,Strin ...@@ -63,8 +63,19 @@ public class DbDataSlideSink extends RichSinkFunction<Tuple6<String,String,Strin
@Override @Override
public void close() throws Exception { public void close() throws Exception {
executorService.shutdown(); if (executorService != null) {
dataSource.close(); executorService.shutdown();
try {
if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
executorService.shutdownNow();
}
} catch (InterruptedException e) {
executorService.shutdownNow();
}
}
if (dataSource != null && !dataSource.isClosed()) {
dataSource.close();
}
} }
@Override @Override
......
...@@ -42,11 +42,11 @@ public class DbDataTransferSink extends RichSinkFunction<String> { ...@@ -42,11 +42,11 @@ public class DbDataTransferSink extends RichSinkFunction<String> {
String configTidbUrl = String.format(envProps.getDb_url(), envProps.getDb_host(), envProps.getDb_port(), envProps.getDb_database()); String configTidbUrl = String.format(envProps.getDb_url(), envProps.getDb_host(), envProps.getDb_port(), envProps.getDb_database());
//System.out.println(configTidbUrl); //System.out.println(configTidbUrl);
dataSource = new DruidDataSource(); dataSource = new DruidDataSource();
// 驱动类名优先取配置 db_driver,未配置则按方言推断,仍无则默认 MySQL // 驱动类名优先取配置 db_driver,未配置则按方言推断,仍无则默认 Kingbase
String driverClass = envProps.getDb_driver(); String driverClass = envProps.getDb_driver();
if (StrUtil.isBlank(driverClass)) { if (StrUtil.isBlank(driverClass)) {
driverClass = "kingbase".equalsIgnoreCase(envProps.getDb_dialect()) driverClass = "mysql".equalsIgnoreCase(envProps.getDb_dialect())
? "com.kingbase8.Driver" : "com.mysql.cj.jdbc.Driver"; ? "com.mysql.cj.jdbc.Driver" : "com.kingbase8.Driver";
} }
dataSource.setDriverClassName(driverClass); dataSource.setDriverClassName(driverClass);
dataSource.setUsername(envProps.getDb_username()); dataSource.setUsername(envProps.getDb_username());
...@@ -61,8 +61,19 @@ public class DbDataTransferSink extends RichSinkFunction<String> { ...@@ -61,8 +61,19 @@ public class DbDataTransferSink extends RichSinkFunction<String> {
@Override @Override
public void close() throws Exception { public void close() throws Exception {
executorService.shutdown(); if (executorService != null) {
dataSource.close(); executorService.shutdown();
try {
if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
executorService.shutdownNow();
}
} catch (InterruptedException e) {
executorService.shutdownNow();
}
}
if (dataSource != null && !dataSource.isClosed()) {
dataSource.close();
}
} }
@Override @Override
......
...@@ -52,11 +52,11 @@ public class DbDataTransferSinkBatch extends RichSinkFunction<String> { ...@@ -52,11 +52,11 @@ public class DbDataTransferSinkBatch extends RichSinkFunction<String> {
// 初始化获取配置 // 初始化获取配置
String configTidbUrl = String.format(envProps.getDb_url(), envProps.getDb_host(), envProps.getDb_port(), envProps.getDb_database()); String configTidbUrl = String.format(envProps.getDb_url(), envProps.getDb_host(), envProps.getDb_port(), envProps.getDb_database());
dataSource = new DruidDataSource(); dataSource = new DruidDataSource();
// 驱动类名优先取配置 db_driver,未配置则按方言推断,仍无则默认 MySQL // 驱动类名优先取配置 db_driver,未配置则按方言推断,仍无则默认 Kingbase
String driverClass = envProps.getDb_driver(); String driverClass = envProps.getDb_driver();
if (StrUtil.isBlank(driverClass)) { if (StrUtil.isBlank(driverClass)) {
driverClass = "kingbase".equalsIgnoreCase(envProps.getDb_dialect()) driverClass = "mysql".equalsIgnoreCase(envProps.getDb_dialect())
? "com.kingbase8.Driver" : "com.mysql.cj.jdbc.Driver"; ? "com.mysql.cj.jdbc.Driver" : "com.kingbase8.Driver";
} }
dataSource.setDriverClassName(driverClass); dataSource.setDriverClassName(driverClass);
dataSource.setUsername(envProps.getDb_username()); dataSource.setUsername(envProps.getDb_username());
...@@ -78,9 +78,27 @@ public class DbDataTransferSinkBatch extends RichSinkFunction<String> { ...@@ -78,9 +78,27 @@ public class DbDataTransferSinkBatch extends RichSinkFunction<String> {
@Override @Override
public void close() throws Exception { public void close() throws Exception {
executorService.shutdown(); if (scheduledExecutorService != null) {
scheduledExecutorService.shutdown(); scheduledExecutorService.shutdown();
dataSource.close(); try {
scheduledExecutorService.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
scheduledExecutorService.shutdownNow();
}
}
if (executorService != null) {
executorService.shutdown();
try {
if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
executorService.shutdownNow();
}
} catch (InterruptedException e) {
executorService.shutdownNow();
}
}
if (dataSource != null && !dataSource.isClosed()) {
dataSource.close();
}
} }
@Override @Override
......
...@@ -124,7 +124,7 @@ public class EnvProperties extends Properties { ...@@ -124,7 +124,7 @@ public class EnvProperties extends Properties {
String log_enable; String log_enable;
public String getLog_enable() { public String getLog_enable() {
return logical_delete == null ? this.getProperty("logical_delete") : logical_delete; return log_enable == null ? this.getProperty("log_enable") : log_enable;
} }
public void setLog_enable(String log_enable) { public void setLog_enable(String log_enable) {
......
...@@ -15,7 +15,7 @@ public class EtlUtils { ...@@ -15,7 +15,7 @@ public class EtlUtils {
properties.setProperty("auto.offset.reset", "earliest"); properties.setProperty("auto.offset.reset", "earliest");
properties.setProperty("sasl.jaas.config", getSaslJaasConfig(username,password)); properties.setProperty("sasl.jaas.config", getSaslJaasConfig(username,password));
properties.setProperty("security.protocol", "SASL_PLAINTEXT"); properties.setProperty("security.protocol", "SASL_PLAINTEXT");
properties.setProperty("sasl.mechanism", "SCRAM-SHA-512"); properties.setProperty("sasl.mechanism", "SCRAM-SHA-256");
properties.setProperty("fetch.max.bytes", "20971520"); //20M properties.setProperty("fetch.max.bytes", "20971520"); //20M
properties.setProperty("flink.consumer.max.fetch.size", "20971520");//20M properties.setProperty("flink.consumer.max.fetch.size", "20971520");//20M
properties.setProperty("session.timeout.ms", "60000"); properties.setProperty("session.timeout.ms", "60000");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment