代码
import com.zjc.bean.SensorReading;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.java.StreamTableEnvironment;
import org.apache.flink.types.Row;
import java.util.Arrays;
public class Test1_Case1 {
public static void main(String[] args) throws Exception{
StreamExecutionEnvironment executionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<SensorReading> sensorReadingDataStreamSource = executionEnvironment.fromCollection(Arrays.asList(
new SensorReading("sensor_1", 1547718199L, 35.8),
new SensorReading("sensor_6", 1547718201L, 15.4),
new SensorReading("sensor_7", 1547718202L, 6.7),
new SensorReading("sensor_10", 1547718205L, 38.1)
)
);
// 方法1,table api
StreamTableEnvironment streamTableEnvironment = StreamTableEnvironment.create(executionEnvironment);
Table sensorTable = streamTableEnvironment.fromDataStream(sensorReadingDataStreamSource);
Table sensorSelect = sensorTable.select("id, temperature").where("id='sensor_1'");
streamTableEnvironment.toAppendStream(sensorSelect, Row.class).print("table api");
// 方法2,sql方式
streamTableEnvironment.createTemporaryView("sqlTable",sensorReadingDataStreamSource);
String sql = "select id,temperature from sqlTable where id = 'sensor_1'";
Table sqlQuery = streamTableEnvironment.sqlQuery(sql);
streamTableEnvironment.toAppendStream(sqlQuery, Row.class).print("sql");
executionEnvironment.execute();
}
}
结果: