public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
socketFunction(env);
//nonParallelSourceFunction(env);
// parallelSourceFunction(env);
// richParallelSourceFunction(env);
env.execute("JavaDataStreamSourceApp");
}
1:socket方式:
public static void socketFunction(StreamExecutionEnvironment env) {
DataStreamSource<String> data = env.socketTextStream("localhost", 18082);
data.print().setParallelism(1);
}
2:自定义数据源,并行数据源
by implementing the
SourceFunction
for non-parallel sources,
or
by implementing the
ParallelSourceFunction
interface
or
extending the
RichParallelSourceFunction
for parallel sources.
public static void richParallelSourceFunction(StreamExecutionEnvironment env) {
DataStreamSource<Long> data = env.addSource(new JavaCustomRichParallelSourceFunction()).setParallelism(2);
data.print().setParallelism(1);
}
public static void parallelSourceFunction(StreamExecutionEnvironment env) {
DataStreamSource<Long> data = env.addSource(new JavaCustomParallelSourceFunction()).setParallelism(2);
data.print().setParallelism(2);
}
public static void nonParallelSourceFunction(StreamExecutionEnvironment env) {
DataStreamSource<Long> data = env.addSource(new JavaCustomNonParallelSourceFunction());
//.setParallelism(2);
data.print().setParallelism(2);
}
JavaCustomNonParallelSourceFunction
package com.imooc.flink.java.course05;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
/**
* Author: Michael PK
*/
public class JavaCustomNonParallelSourceFunction implements SourceFunction<Long> {
boolean isRunning = true;
long count = 1;
public void run(SourceContext<Long> ctx) throws Exception {
while (true) {
ctx.collect(count);
count += 1;
Thread.sleep(1000);
}
}
public void cancel() {
isRunning = false;
}
}
JavaCustomParallelSourceFunction
package com.imooc.flink.java.course05;
import org.apache.flink.streaming.api.functions.source.ParallelSourceFunction;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
/**
* Author: Michael PK
*/
public class JavaCustomParallelSourceFunction implements ParallelSourceFunction<Long> {
boolean isRunning = true;
long count = 1;
public void run(SourceContext<Long> ctx) throws Exception {
while (true) {
ctx.collect(count);
count += 1;
Thread.sleep(1000);
}
}
public void cancel() {
isRunning = false;
}
}
JavaCustomRichParallelSourceFunction
package com.imooc.flink.java.course05;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.functions.source.RichParallelSourceFunction;
/**
* Author: Michael PK
*/
public class JavaCustomRichParallelSourceFunction extends RichParallelSourceFunction<Long> {
boolean isRunning = true;
long count = 1;
public void run(SourceContext<Long> ctx) throws Exception {
while (true) {
ctx.collect(count);
count += 1;
Thread.sleep(1000);
}
}
@Override
public void open(Configuration parameters) throws Exception {
super.open(parameters);
}
@Override
public void close() throws Exception {
super.close();
}
public void cancel() {
isRunning = false;
}
}