readTextFile 接口可读取指定文本文件,遵循TextInputFormat逐行读取规则并返回。
(在TextInputFormat中,文本文件中的每一行都是一条记录。 值是行的内容,而Key是行的字节偏移量。)
import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; public class readTextFileReview { public static void main(String[] args) throws Exception{ // 1.获取flink流计算的运行环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 2.从文本文件读取数据 // 参加路径参数可以是本地,也可以是hdfs,如 "file:///some/local/file" or "hdfs://host:port/file/path") DataStream<String> lines = env.readTextFile("hdfs://192.168.***.***:9000/test3.txt"); int parlNum = lines.getParallelism(); System.out.println("The parallelism num of readTextFile is " + parlNum); // result:4 //3.调用Sink (Sink必须调用) lines.print(); //4.启动流计算 // 这个异常能使用try...catch... 处理,因为程序希望将异常抛给上层flink,flink会根据异常来做相应的重启策略等处理 env.execute("readTextFileReview"); } }readTextFile 返回的DataStream是并行的,默认的并行度和本地电脑的核数一致。可以直接从本地读取数据,也可以从hdfs读取数据。