最近学习spark,然后遇到了这么一个题,有如下数据:
http://bigdata.edu360.cn/laozhang
http://bigdata.edu360.cn/laoduan
http://javaee.edu360.cn/xiaoxu
要统计最受欢迎的老师,然后我就试了一下map和flatmap这两个算子,结果如下:
flatmap的结果
map的结果
map得出的结果和我的预期一致,flatmap的结果为什么是单个的字符呢?
然后我就上网去搜资料,看到了一个不错的图(图片来源于链接)
这里说明了flatmap是在map的基础上在做了一次flatten操作。也就是我之前map转换出来的laozhao等字符串属于可迭代的,然后在flatten的操作下变成了一个个字符,当我map转换出来的结果是数字的话,那么就不能执行flatten操作。flatten需要传入的数据类型应该是TraversableOnce类型。