美文网首页
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-按照指定条数做文件分割

    起源 故事的起源是同事接了一个非常傻*的需求叫按条数写文件,命题作文,能用的组件有Spark,Hdfs,Hbase...

  • jdk8 流操作

    stream操作 list排序 list 按指定条数分割

  • C++ 新手必备:文件分割器

    一个小巧的VC++ 文件分割器 【源码】,将文件分割成指定块数、指定大小,然后可以合并文件,实现步骤:获得将要分割...

  • Mac 中文件分割、合并

    文件分割 打开终端Termial。 指定接收分割文件的目标目录。 用命令:split -b 分割后每个文件的大小 ...

  • 2.11 分割文件和数据

    《Linux Shell 脚本攻略(第 2 版)》读书笔记 split 指定分割文件大小时,除了 k(KB)后缀,...

  • Spark读写压缩文件

    一、 压缩文件读取 spark 自动根据文件后缀名判断压缩格式,不用特别指定 二、写文件时压缩 spark会加载H...

  • Spark集群部署

    Spark下载以及目录 修改配置文件 在spark-env.sh当中 指定slaves:在配置文件当中添加相应的从...

  • golang大Excel文件(.xlsx)分割成多个指定大小条数

    今天一个朋友由于要将本地excel数据导入到saas平台,但是saas平台规定了excel大小条数,并且要求按规定...

  • shell-split命令

    按照文件大小切割 按照行数切割 指定切割后的文件前缀

  • linux 日志分割

    使用split命令,将日志文件分割成固定字节大小的文件 使用split命令,将日志文件按照固定行数分割

网友评论

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

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