简介
本文主要介绍如何通过Flink JDBC Connector将数据写入ClickHouse以及直接使用Flink JDBC Connector操作ClickHouse存在什么样的问题。
Flink JDBC Connector的使用
- 通过JDBCUpsertTableSink.Builder创建一个JDBCUpsertTableSink对象,JDBCUpsertTableSink需要的参数:
private JDBCUpsertTableSink(
TableSchema schema,
JDBCOptions options,
int flushMaxSize,
long flushIntervalMills,
int maxRetryTime)
- 创建TableSchema对象:
TableSchema schema = TableSchema
.builder()
.fields(
fieldName,
TypeConversions.fromLegacyInfoToDataType(fieldType)
).build();
- 创建JDBCOptions对象
JDBCOptions.builder
.setTableName(tablename)
.setDBUrl(dbUrl)
.setDriverName(driverName)
.setDialect(clickHouseDialect)
.setUsername(username)
.setPassword(passdword)
.build
// ----
private JDBCOptions(
String dbURL,
String tableName,
String driverName,
String username,
String password,
JDBCDialect dialect // 数据库的方言
)
进入到JDBCDialect这个类中发现源码中并不支持clickHouse Dialect
public final class JDBCDialects {
private static final List<JDBCDialect> DIALECTS = Arrays.asList(
new DerbyDialect(),
new MySQLDialect(),
new PostgresDialect()
);
.