IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Flink JDBCInputFormat并行度 -> 正文阅读

[大数据]Flink JDBCInputFormat并行度

先贴出代码

public static void main(String[] args) {
        //System.getProperties().setProperty("oracle.jdbc.J2EE13Compliant", "true");

        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        int fetchSize = 7;

        NumericBetweenParametersProvider numericBetweenParametersProvider = new NumericBetweenParametersProvider(fetchSize, 11630494, 11630568);

        String sourceDriverName="oracle.jdbc.driver.OracleDriver";
        String sourceDbUrl = "jdbc:oracle:thin:xxxxx:1521:pacs";
        String sourceUserName = "xxxx_test";
        String sourcePassword = "123456";

        RowTypeInfo rowTypeInfo = new RowTypeInfo(
                BasicTypeInfo.BIG_DEC_TYPE_INFO,
                BasicTypeInfo.STRING_TYPE_INFO
        );

        JDBCInputFormat.JDBCInputFormatBuilder inputBuilder = JDBCInputFormat.buildJDBCInputFormat().setDrivername(sourceDriverName)
                .setDBUrl(sourceDbUrl).setUsername(sourceUserName).setPassword(sourcePassword)
                .setQuery("SELECT ID,ITEM_TYPE FROM OMS_PAYMENT_HISTORY WHERE SOURCE_CODE='OFA' AND ID>=? AND ID<= ?")
                .setFetchSize(fetchSize)
                .setRowTypeInfo(rowTypeInfo).setParametersProvider(numericBetweenParametersProvider);

        DataSet<Row> source = env.createInput(inputBuilder.finish()).setParallelism(numericBetweenParametersProvider.getParameterValues().length);

        try {
            source.print();
            //env.execute("aaaa");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

设置并行度的关键是

NumericBetweenParametersProvider numericBetweenParametersProvider = new NumericBetweenParametersProvider(7, 11630494, 11630568);

3个参数的意义是?fetchSize: 也就是查询的步长 id>=0 <=9 则fetchSize就是10;??11630494是你这个sql的最小id?11630568是最大id;

sql中的 AND ID>=? AND ID<= ?  是必须的否则无法做参数的拼接  

需要注意如果最小id与最大id的间隔比较大,同时fetchSize比较小时产生的并行度会很大,要注意

如果不设置setParametersProvider,只设置了并行度,那么最终也只会有一个线程来执行查询

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 21:12:14  更:2021-08-06 21:12:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 16:43:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码