赞
踩
Join算子、CoGroup算子、GroupBy算子等需要根据指定的键进行转换,以便将相同键的数据路由到相同的管道(Pipeline)中,然后进行下一步的计算。所以,在使用它们之前,需要先将DataStream数据集或DataSet数据集转换成对应的KeyedStream和GroupedStream
指定分区键的方式:
根据字段位置指定:在DataStream API中,可以通过KeyBy()方法将DataStream数据集根据指定的键转换成KeyedStream。在DataSet API中,在对数据进行聚合时,可以使用GroupBy()方法对数据进行重新分区
根据字段名称指定:
如果要在Flink中使用嵌套的复杂数据结构,则可以通过字段名称来指定键。。在使用字段名称来指定键时,DataStream数据集中的数据结构必须是Tuple类型或POJO类型的
如果程序中使用的数据是Tuple类型的,那么字段名称通常是从1开始计算的,字段位置索引则从0开始计算,下面两种方式是等价的
// 通过字段名称指定第一个字段
dataStream.keyBy("_1");
// 通过字段位置指定第一个字段
dataStream.keyBy(0);
根据键选择器指定:可以通过定义键选择器来选择数据集中的键
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。