阁下说的应该是集合类的流式处理,而不是文件流吧!
1.流式处理从思维的角度来说那就是通畅,可以不需要思维阻塞地一直写才去,有一种看爽文的感觉,如果没有流式处理,那么就需要不停地打断思路遍历集合进行处理,代码是又丑又很难看懂!
2.最喜欢流式处理的应该是数据开发类的程序员,很多数据的处理工作很复杂,分步骤,需要不同的处理逻辑,适用流式处理就可以把每一个步骤当成流的一个操作节点处理,方便!
举例:
1.如果写过mapreduce的都知道,常规写法可能需要写一个循环,超级复杂,如果使用流就可以写成:(sparkstreaming举例:)
# 统计词频counts = lines.map(lambda x:x.strip())\ #1.去除首位空格 .flatMap(lambda x: x.split(' '))\ #2.根据空格分出每一个词 .filter(lambda x:x not in stop_words) \ #3.过滤掉停用词 .map(lambda x: (x, 1)) \ #4.给每一个词标记1 .reduceByKey(add) #5.统计求和 .sortBy(lambda x:-x[1]) # #排序通过一个流式的处理就简单完成了
1.java的一个数据处理流程举例
List<Entity> entityList = xxxx;MapFrame<Object,Double> groups = ListFrame.fromList(entityList )
.handle("value=format(value,2)") //1.列表实体的value保留两位小数
.handle(entity->entity.getName()==null,"name=''") //2.name为空变为""
.handle(entity->entity.getValue()==null,"value=0","value=value+2") //3.value不为空+2
.handle("name=replace(name,'#','')") //4.替换#
.handle("percent=double(value)/"+sum) //5.计算百分比
.groupBy("name").sum("percent"); //6.分组统计
上面的过程在不写for循环的条件下就流式处理完了,仅仅从写那一刻的感觉来说就很通畅
再见
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有