00:00
好,接下来呢,我们看一下这个reduce噪音这个案例实操啊。看一看啊,看看需求什么。需求是这样的,有一个订单表报的表。二表里面呢,有三个字段,一个是ID,一个是PID,就是product ID。一个是数量。产品的数量,那下一张表呢,就是这个产品表。头大不大,很厉害。那这里面呢,有两个字段,一个是产品的ID和产品的名称。小米、华为、格力。收了他代言费了是吧。好,那最终要实现什么效果呢?将商品表中数据根据商品的PID合并到订单表中。什么意思?也就是说把这张表里面的PID啊。都替换成什么呢?啊,因为他俩是不是相同啊。说很很好记吧,零一这里面零一都变成小米,零二变成华为对吧,啊零三变成。
01:06
等等,下面这三个一加一是这样的。你说他们是公共的这个连接之段。最终实现的效果呢,是这样,这个ID在这,在这儿只是把中间这个ID变成了内。实现这么一个招引可以。如果要你用。口语句的话是不是轻松搞定?简单的不要的不要的哈。那现在呢,哎,让你去用maps去实现。怎么办呢?这是呢,原始数据啊。订单表。啊,这是产品表。里面分别存的是三个字段,两个字段。然后这是最终我们期望输出的形式,是这样的。
02:05
左侧订单啊,右侧数量,然后这块呢,中间是替换成他。整合呢?看一下我们在外部阶段干什么事情。获取输入文件的类型。你获取数据输入的时候,一定要知道是哪张表来的数据。那我刚才说过根据什么呢?哎,万能的切片。往下获取输入的数据啊,不同文件分别处理是不同的这个表,那我切割的时候能一样吗?比如说你读取这一行的时候。它是三个字段,读取这一行的时候,它是两个字段。那你切完之后如何来封装这个并对象呢?就是你还是得根据。他是哪张表啊?还是要跟他去做。
03:01
那最终我切割成啊,或者说封装成B对象之后变成什么样呢?变成这样。谁没P?这PID啊啊,你看这个PID和这PID是一样的,哎,PID为T,那么C为Y。剩余的值加上标记位对吧,那剩余的值是不是它它。啊,那你看吧,剩余的值,那这个是001001加上标记位,那是不是奥表的。那下面呢,如果说你是这张表的产品表的,那你的IPID是不是依然是P啊。那谁你呢?这是标记。这个是PD里面的产品名称。理解哈。我们都以这个PID为。那剩下的值为Y6值,那它放在这。
04:03
然后加一个标记位是奥两的,我为什么在后面加一个这个标记啊。是为了在嘴60端的时候好区分呢,哎,好区分好处理。那我这么区分完之后。干啥呢?哎,对这个数据默认,他就会对这个产品的ID啊进行。一个排序。这个没有异议吧。会对这个产品ID进行排序啊哎,排完序之后把所有的001变成这。也就是说,PID相同的数聚在一起了。那聚在一起的数据是不是这样?PID相同的。只不过呢,这里的数据类型还不太一样,哎,上面呢,这个是凹表的,下面呢是产品表的。不管你一不一样,哎。到这个端我就有办法了,怎么到re端就有办法了呢?Re方法啊,缓存订单,数据集合和产品表,然后进行合并,也就是说我把你这里面的数据我都给你取出来,封装一个对象,这里面又封装到一个对象里面去。
05:11
干什么呢?到时候就可以把你进行一个替换。替换成什么呢?他们公共的是不是都是这个P呀。用的都是屁。怎么从你这里也能拿到K,从这里面拿,那我就把你这个对象里面的P拿出来。放到这个集合里面,是不是就把。我存的时候就以它为T,这是Y6存到一个。一个对象里面去。数据能不能把这个纸拿出来。或者说直接取你这里的值也行,取出来之后我添加到这里面去。只要这一组数据它能进入到一个reduce方法里面去。那剩下的事就。
06:07
这个呢,是。非常之难的一个哈。
我来说两句