flink增量读文本数据

来源:互联网 发布:自建服务器绑定域名 编辑:程序博客网 时间:2024/06/07 15:47

如下代码可以实现增量从文件地址读数据,读完一次之后,若你对文件增加了数据,它会相应的读出来。

方法内有三个属性,分别是WatchType.ONLY_NEW_FILES:处理整个文件,PROCESS_ONLY_APPENDED只处理相应的增加部分,REPROCESS_WITH_APPENDED :当文件内容增加了之后会重新处理整个文件。

在新的flink版本里面,只有两种模式了:PROCESS_ONCE以及PROCESS_CONTINUOUSLY.分别对应处理一次以及增量处理。

大家可以根据自己的需求选择模式。

import org.apache.flink.api.common.typeinfo.BasicTypeInfo;import org.apache.flink.api.common.typeinfo.TypeInformation;import org.apache.flink.api.java.io.TextInputFormat;import org.apache.flink.core.fs.Path;import org.apache.flink.streaming.api.datastream.DataStream;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;import org.apache.flink.streaming.api.functions.source.FileProcessingMode;/** * Created by master on 8/17/17. */public class read_append_text {    public static void main(String[] args) throws Exception {        Path pa=new Path("/home/master/qingshu");        TextInputFormat format = new TextInputFormat(pa);        BasicTypeInfo typeInfo = BasicTypeInfo.STRING_TYPE_INFO;        format.setCharsetName("UTF-8");        StreamExecutionEnvironment env=StreamExecutionEnvironment.getExecutionEnvironment();        DataStream<String> st=env.readFile(format,"/home/master/qingshu", FileProcessingMode.PROCESS_CONTINUOUSLY, 1L,(TypeInformation)typeInfo);        st.print();        env.execute();    }}