DataSet API支持从多种数据源中将批量数据集读到Flink系统中,并转换成DataSet数据集。三个月接入接口共有三种类型,分别是文件系统类型,Java Collection类型,以及通用类数据源。
文件类数据
readTextFile(path)/TextInputFormat
将文本内容转换为DataSet[String]类型数据集
env.readTextFile("file:///")
readTextFileWithValue(path)/TextValueInputFormat
StringValue是一种可变的String型,通过String Value存储文本数据可以有效
降低String对象创建时的数量,从而降低系统性能上的开销
env.readTextFileWithValue("file:///","UTF-8")
readCsvFile(path)/CavInputFormat
读取指定分割符切割的CSV文件,且可以直接换成Tuple类型,
Case Class对象或者POJOs类
env.readCsvFile("file:///",includedFields = Array(0,3))
readSequenceFile(Key,Value,path)/SequenceFileInputFormat
读取SequenceFileInputFormat类型的文件,在参数中指定Key Class 和 Value Class类型,
返回结果为Tuple2[Key,Value]类型
env.readSequenceFile("file:///",includedFields = Array(0,3))
集合类数据
fromCollection(Seq)
集合类型可以是数组、List等,也可以从非空Iterable中创建
env.fromCollection(Seq("flink","hadoop")
fromElements(_*)
数据集中的所有数据对象类型必须一致
env.fromElements("flink","hadoop")
generateSequence(from,to)
指定from到to范围区间,然后在区间内部生成数字序列数据集
env.generateSequence(1,100000)
通用数据接口
readFile(inputFormat,path)/FileInputFormat
指定格式文件读取并转成DataSet数据集
env.readFile(new PointInputFormat(),"file:///")
createInput(inputformat)/inputformat
自定义通用型数据源,将读取的数据转换为DataSet数据集。
env.createInput(JDNCInputformat.buildJDBCInputFormat) .setDrivername("com.mysql.jdbc.Driver") .setDBUtil("jdbc:mysql://localhost:3306/test") .setQuery("select * from person") .finish()