美文网首页
Spark笔记-002-按照指定条数做文件分割

Spark笔记-002-按照指定条数做文件分割

作者: 叫我小明谢谢 | 来源:发表于2018-06-26 00:25 被阅读0次

    起源

    故事的起源是同事接了一个非常傻*的需求叫按条数写文件,命题作文,能用的组件有Spark,Hdfs,Hbase,CarbonData,Obs,没了。
    这需求具体是每次来多少数据不一定多少,要按一个规定的条数(具体我也忘了)去把它写到Hdfs里,生成多个文件。同事就问我做过这种东西没,怎么做。

    为什么这需求很傻*

    自从需求功能设计从组内切到组外,开始由不熟悉大数据组件的人做设计,不适合用spark做的需求就越来越多了。
    动动脑,大概的想一下,RDD精准的去控制条数要首先拿到条数,这一个job就来了,然后要重新分区再去写文件,一个Shuffle又来了,数据要乾坤大挪移一遍。要不就要先写出去文件再读回来,吞了吐吐了吞何必呢。还有那种遍历文件找条数不够的写的方式,实话说,也挺有病的,况且这个文件名设计的不好就有并发写的问题,一个task重放没准就能撞见鬼。

    怎么办

    吐槽归吐槽,想想这东西怎么能成本比较小的实现呢?
    抽象并且分解下这个需求,首先是,要指定条数写,那么在这之前就要拿到条数。什么是条数,就是index,那么,第一个问题就是,怎么给每条数据绑定index?有个api,zipWithIndex,分区大于1的时候会触发一个job。
    关于写数据,这个也好办,查询出来数据条数,指定按规则repartition,单partition写成一个文件,就完事了。

    相关文章

      网友评论

          本文标题:Spark笔记-002-按照指定条数做文件分割

          本文链接:https://www.haomeiwen.com/subject/ufzjyftx.html