栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

java flink(flink从数据库读取数据)

java flink(flink从数据库读取数据)

//TODO 获取jdbcSink的工具类 将数据写入Clickhouse
public class clickHouseUtil {
   public static SinkFunction getJdbcSink(String sql){
       SinkFunction jdbcSink = JdbcSink.sink(sql, new JdbcStatementBuilder() {
                   @SneakyThrows
                   @Override
                   public void accept(PreparedStatement ps, T t) throws SQLException {
//               TODO 通过反射 对象获取类的信息
                       Field[] fields = t.getClass().getDeclaredFields();//获取所有属性包括私有
//               除了继承的属性
                       int skipFields = 0;
                       for (int i = 0; i < fields.length; i++) {
                           Field field = fields[i];
                           TransientSink annotation = field.getAnnotation(TransientSink.class);
                           if (annotation != null) {
//                       如果存在该注解
                               System.out.println("该字段不会写入Clickhouse" + field.getName());
                               skipFields++;
                               continue;//跳出本次循环
                           }
                           field.setAccessible(true);
                           Object o = field.get(t);//获取对象属性的值
                           ps.setObject(i + 1 - skipFields, o);
                       }
                   }
               }, new JdbcExecutionOptions.Builder().withBatchSize(5)
                       .withBatchIntervalMs(5000L).withMaxRetries(3).build(),
               new JdbcConnectionOptions.JdbcConnectionOptionsBuilder()
                       .withDriverName("ru.yandex.clickhouse.ClickHouseDriver")
                       .withUrl("jdbc:clickhouse://hadoop106:8123")
                       .build());
       return jdbcSink;
   }
}
通过自定义注解过滤掉我们不需要写入Clickhouse的字段
//TODO 该注解用来标识往clickhouse写入的时候不需要的字段
@Target(FIELD)//标识该注解用于属性上
@Retention(RetentionPolicy.RUNTIME)//注解保留策略
public @interface TransientSink {
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/771434.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号