文章18 | 阅读 10840 | 点赞0
在Data Source部分和其他部分使用过写文件和打印操作,代码相同,只对理论进行介绍
通过对批量数据的读写(DataSource)及转换(Transformation)操作,最终形成用户期望的结果数据集,然后需要将数据写入不同的外部介质中进行存储,进而完成整改批量数据处理过程。Flink中对应数据输出功能被称为DataSinks操作,和DataSource Operator操作类似,为了能够让用户更加灵活地使用外部数据,Flink抽象出通用的OutputFormat接口,批量数据输出全部实现与OutputFormat接口。Flink内置了常用数据存储介质对应的OutputFormat,如HadoopOutputFormat、JDBCOutputFormat等。同样,用户也可以自定义实现OutputFormat接口。
Flink在DataSet API中的数据输出共分为三种类型:
其中,第一种和第三种在之前程序中进行了使用,对第二种进行简单介绍。
可以使用自定义OutputFormat方法来定义介质对应的OutputFormat。
// 读取数据集并转换为(word , count) 类型数据
val dataSet:DataSet[{String, Long}] = ...
// 将数据集的格式转换成[Text, LongWritable] 类型
val words = dataset.map( ... )
// 定义HadoopOutputFormat
val hadoopOutputFormat = new HadoopOutputFormat[ Text, LongWritable ](
new TextOutputFormat[ Text, LongWritable ] ,
new JobConf
)
// 指定输出路径
FileOutputFormat.setOutputPath( hadoopOutputFormat .getJobConf , new Path(resultPath) )
// 调用 Output 方法将数据写入Hadoop文件系统
words.output(hadoopOutputFormat )
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/hongzhen91/article/details/90734278
内容来源于网络,如有侵权,请联系作者删除!