一、指定查询 DataStream->Table
StreamExecutionEnvironment env = Utils.getEnvironment();
StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
DataStreamSource<String> dataSource = env.socketTextStream("192.168.134.6", 9898);
SingleOutputStreamOperator<Tuple3<String, String, Double>> ds = dataSource.flatMap(new FlatMapFunction<String, Tuple3<String, String, Double>>() {
@Override
public void flatMap(String s, Collector<Tuple3<String, String, Double>> collector) throws Exception {
String[] split = s.split("\\s");
collector.collect(new Tuple3(split[0], split[1], Double.parseDouble(split[2]) * Double.parseDouble(split[3])));
}
});
tableEnv.createTemporaryView("Orders", ds, $("user"), $("product"), $("amount"));
Table result2 = tableEnv.sqlQuery("SELECT user,product, amount FROM Orders ");
DataStream<Row> tuple3DataStream = tableEnv.toAppendStream(result2, Row.class);
tuple3DataStream.print();
二、查询相关
2.1 GroupBy
StreamExecutionEnvironment env = Utils.getEnvironment();
StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
DataStreamSource<String> dataSource = env.socketTextStream("192.168.134.6", 9898);
SingleOutputStreamOperator<Tuple3<String, String, Double>> ds = dataSource.flatMap(new FlatMapFunction<String, Tuple3<String, String, Double>>() {
@Override
public void flatMap(String s, Collector<Tuple3<String, String, Double>> collector) throws Exception {
String[] split = s.split("\\s");
collector.collect(new Tuple3(split[0], split[1], Double.parseDouble(split[2]) * Double.parseDouble(split[3])));
}
});
tableEnv.createTemporaryView("Orders", ds, $("user"), $("product"), $("amount"));
Table result2 = tableEnv.sqlQuery(
" SELECT user,product,sum(amount) as amount FROM Orders " +
" GROUP BY user,product ");
DataStream<Tuple2<Boolean, Row>> tuple3DataStream = tableEnv.toRetractStream(result2, Row.class);
tuple3DataStream.print();
env.execute("test_transform_job");
(true,zhansan,苹果,9.0)
(false,zhansan,苹果,9.0)
(true,zhansan,苹果,18.0)