Flink sql

1.创建表的执行环境

第一种

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
SingleOutputStreamOperator<Event> streamOperator = env.addSource(new ClickSource())
        .assignTimestampsAndWatermarks(WatermarkStrategy.<Event>forBoundedOutOfOrderness(Duration.ZERO)
                .withTimestampAssigner(new SerializableTimestampAssigner<Event>() {
                    @Override
                    public long extractTimestamp(Event event, long l) {
                        return event.timestamp;
                    }
                }));


//创建表的执行环境
StreamTableEnvironment streamTableEnvironment = StreamTableEnvironment.create(env);

//转化为table
Table table  = streamTableEnvironment.fromDataStream(streamOperator);

第二种

EnvironmentSettings settings =EnvironmentSettings.newInstance()
        .inStreamingMode()
        .useBlinkPlanner()
        .build();
TableEnvironment tableEnv =  TableEnvironment.create(settings);

2.注册表用于把数据载入输入

String inputDDL = " CREATE TABLE clicktable ( "+
        "url STRING ,"+
        "user_name STRING," +
        "timestamp BIGINT "+
        " ) with ("+
        " 'connector' = 'filesystem' ,"+
        " 'path' = 'file/click.txt', "+
        " 'format' = 'csv' )";

TableResult tableResult = tableEnv.executeSql(inputDDL);

3.通过sql查询语句得到一张结果表result

Table result= tableEnv.sqlQuery("select url,count(1) as cnt from clicktable group by url");

4.表输出

String createDDL = " CREATE TABLE output ( "+
        "url STRING ,"+
        "cnt BIGINT ) with ("+
        " 'connector' = 'filesystem' ,"+
        " 'path' = 'output', "+
        " 'format' = 'csv' )";

tableEnv.executeSql(createDDL);

result.executeInsert("output");

 

流表转换:

1.表转流

StreamTableEnvironment 

todataStream 

toChangelogStream

2.流转表

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值