zoukankan      html  css  js  c++  java
  • 合并小文件spark开发

    历时一个星期的讨论与开发,终于得出了一个合并小文件的雏形。

    作为一个开发新生代,实属不易,发布出来与大家共勉。

    思路:

    这个思路是我与一个大佬一起完成的。接到合并小文件的任务以后,我们开始再网上各种找资料,跟朋友沟通学习。其中在网上找到了一篇博客写的很好:

    https://www.cnblogs.com/heguoxiu/p/10691019.html   这篇博客已经很完善了,但是我们后边并没有完全按照他的思路来,其中他这里边缺少了校验的过程,就是小文件合并以后对文件条数的校验

    * 合并文件
    * 合并步骤:
    * 1. 将小文件目录(srcDataPath)下的文件移动到临时目录/mergePath/${mergeTime}/src
    * 2. 计算临时目录(/mergePath/${mergeTime}/src)的大小。 根据大小确定分区的数。
    * 3. 使用coalesce或者repartition, 传入分区数。 将临时目录数据写入临时的数据目录(/mergePath/${mergeTime}/data)

    *4.校验srcDataPath目录下数据条数和/mergePath/${mergeTime}/src目录下的条数是否一致,如若一致那么进行步骤5,6,否则,将小文件原封不动的放回去
    * 5. 将临时数据目录文件move到文件目录(srcDataPath)
    * 6. 删除临时目录(/merge/tmp)

    以上这个思路是第一版,后来考虑到一个问题就是如果我们把小文件移动到临时目录的时候,那段时间这个目录对应的表是无法查询的,为了避免这个问题,我们没有选择移动文件,而是选择了通过read读取文件,转成DF,然后再把DF写入一个临时目录,这样就不会出现合并目录对应的表无法查询的问题了。

    h

  • 相关阅读:
    事务创建函数
    实现Xshell断开连接情况下Linux命令继续执行
    MySQL UNION 操作符
    CentOS安装部署Mysql 5.7
    连接数据库
    @Results用法总结
    在Java中如何高效的判断数组中是否包含某个元素
    Java中的map集合顺序如何与添加顺序一样
    instanceof的用法
    枚举
  • 原文地址:https://www.cnblogs.com/xuziyu/p/12028690.html
Copyright © 2011-2022 走看看