读取数据
file类型的source
package day06;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.DataTypes;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.java.StreamTableEnvironment;
import org.apache.flink.table.descriptors.FileSystem;
import org.apache.flink.table.descriptors.OldCsv;
import org.apache.flink.table.descriptors.Schema;
import org.apache.flink.table.types.DataType;
import org.apache.flink.types.Row;
public class FlinkSQL03_Source_File {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
tableEnv.connect(new FileSystem().path("sensor"))
.withFormat(new OldCsv())
.withSchema(new Schema()
.field("id", DataTypes.STRING())
.field("ts",DataTypes.BIGINT())
.field("temp",DataTypes.DOUBLE())
)
.createTemporaryTable("sensorTable");
Table sensortable = tableEnv.from("sensorTable");
Table tableResult = sensortable.select("id,temp").where("id='sensor_1'");
Table sqlResult = tableEnv.sqlQuery("select id,ts from sensorTable where id ='sensor_7'");
tableEnv.toAppendStream(tableResult, Row.class).print("Table");
tableEnv.toAppendStream(sqlResult,Row.class).print("SQL");
env.execute();
}
}
kafka类型的source
package day06;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.DataTypes;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.java.StreamTableEnvironment;
import org.apache.flink.table.descriptors.Csv;
import org.apache.flink.table.descriptors.Json;
import org.apache.flink.table.descriptors.Kafka;
import org.apache.flink.table.descriptors.Schema;
import org.apache.flink.types.Row;
import org.apache.kafka.clients.consumer.ConsumerConfig;
public class FlinkSQL04_Source_Kafka {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
tableEnv.connect(new Kafka()
.version("0.11")
.topic("test")
.property(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "hadoop102:9092")
.property(ConsumerConfig.GROUP_ID_CONFIG, "BigData0720"))
.withFormat(new Json())
.withSchema(new Schema()
.field("id", DataTypes.STRING())
.field("ts", DataTypes.BIGINT())
.field("temp", DataTypes.DOUBLE()))
.createTemporaryTable("kafka");
Table table = tableEnv.from("kafka");
Table tableResult = table.groupBy("id").select("id,temp.max");
Table sqlResult = tableEnv.sqlQuery("select id,min(temp) from kafka group by id");
tableEnv.toRetractStream(tableResult, Row.class).print("Table");
tableEnv.toRetractStream(sqlResult, Row.class).print("SQL");
env.execute();
}
}
输出数据
file类型的sink
package day06;
import bean.SensorReading;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.DataTypes;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.java.StreamTableEnvironment;
import org.apache.flink