温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
了解了物理分区的基本概念,那接下来我们就可以针对不同的分区方式来做一个具体的了解了。首先最简单也最基本的重分区方式当然就是随机分区了,这就是我们所说的杀否啊杀否我们知道本身它有洗牌的意思,所以这种分区方式呢,哎,那就是把数据流里边的数据随机的打乱,然后非常均匀的传递到分配到下游的并行子任务当中去。那所以这种方式它是服从均匀分布的啊,而且是完全随机,对于相同的输入,有可能每次分区执行的结果是不同的,具体在代码里面呢,也非常简单,就是直接调用data stream的点杀数方法就可以了。接下来我们就在代码里边来做一个测试啊,那还是在当前的包下边去新建一个SC的object,当前是分区操作,所以叫做。
01:00
Shuffle。Test。呃,那这个流程都是一样的,首先我们先创建一个流式的执行环境,Execution environment get,先把它拿到。同样,我们还是把它叫做env。上边下划线,先引入对应的影视转换,然后接下来呢,我们还是方便测试,把全局的并行度先设成一,那接下来呢,我们直接读取数据源,这个数据源我们就简单一点吧,不用定义测试数据了,我们直接读取。自定义的数据源,我们还记得当时定义了一个叫做click source的数据源啊,它会随机的生成,不停的生成数据,一秒钟一个,那我们就直接把它读进来就好了。所以接下来。我们的读取方式就是env。直接ADDS里边去new一个click s就可以了。我们可以把得到的这一个数据流叫做stream。然后接下来呢,我们当然是要做一个洗牌了,洗牌之后。
02:06
打印输出。所以我们这里可以直接stream调它的,我们看有一个方法就叫做沙Le啊,注意在tla里边这个沙Le本身啊,这个方法的定义后边是没有小括号的啊,所以我们这里边直接调用的时候呢,后面也不加小括号,直接这样调就可以了。然后接下来直接做一个print打印啊,这里我们可以加一个文字描述,这里是shuffle。啊,那当然了,在沙否的时候,我们可以把它的并行度调整一下,因为我们全局的并行度是一啊,其实这个不设的话我们也知道啊,当前click s本身是一个非并行的s function,它并不是parallel,所以本身它并行度只能是一,那我们在这里呢,后边既然是要洗牌嘛,那显然它的并行度就要高一点,所以我们把这个print并行度设置为四。
03:02
PARA4。接下来就可以清楚的看到啊,杀否之后,到底每一个数据分发到了哪个对应的分区上面,最后不要忘记。Exe执行起来,哎,这就是我们整个测试的过程,其实非常简单,好,接下来我们来运行一下,看一看效果怎么样。我们可以看到哦,这里1413414,然后是二,哎,这个出现基本上是均匀分开的,但是出现的频率呢,可以说是完全没有规律啊,它是彻底随机打乱的,就是具体哪一次出现哪一个分区对应的数据,这是完全没准的,这就是我们所说的洗牌随机分布。
我来说两句