欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Flink DataSet 工具类 DataSetUtils 常用API

程序员文章站 2022-07-14 13:49:06
...

DataSetUtils类提供了一些生成index和数据采样和分析的方法,包括countElementsPerPartition、zipWithIndex、zipWithUniqueId、sample、sampleWithSize、summarize等。

首先构造输入数据 

DataSet<Tuple2<Integer,String>> input = env.fromElements(Tuple2.of(1,"a"),Tuple2.of(2,"b"),Tuple2.of(3,"c"),Tuple2.of(4,"d"),Tuple2.of(5,"e"),Tuple2.of(6,"f"));

countElementsPerPartition    统计每个分区中元素的个数

返回Tuple2<partitionID,elementCount>

 DataSetUtils.countElementsPerPartition(input).print();

zipWithIndex    给每个元素生成唯一的、连续的index

返回Tuple2<Long, T>

先调用countElementsPerPartition计算每个分区中元素的数量,然后为分区中的元素生成index

DataSetUtils.zipWithIndex(input).print();

zipWithUniqueId    给每个元素生成唯一的、不连续的ID

与zipWithIndex不同,不需要计算每个分区中的元素数量

DataSetUtils.zipWithUniqueId(input).print();

sample    对输入数据进行采样操作

withReplacement:是否可以重复采样  

fraction:每个元素被选中的概率,不能重复采样时fraction [0,1],可以重复采样时fraction[1,∞]

DataSetUtils.sample(input,false ,0.3 ).print();

可以指定种子的采样操作,seed固定时,生成的样本集不变,上面的无种子采样其实后台调用了随机数种子

DataSetUtils.sample(input,false ,0.3 ,3 ).print();

sampleWithSize    生成指定大小的样本集  

numSamples:样本数量

DataSetUtils.sampleWithSize(input,false ,2 ).print();

生成指定大小的样本集,指定种子

DataSetUtils.sampleWithSize(input,false,2 ,3 ).print();

summarize    统计分析每个列的元素

返回DataSet<TupleSummaryAggregator<R>>  包括最大最小值,均值,方差,标准差等

System.out.println(DataSetUtils.summarize(input));