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

  • 相关阅读:
    heapq of python
    array of python
    Unittest of Python
    事件驱动型工作流 vs 引擎型工作流
    airflow
    WPF 调试触发器
    WPF 使用Popup和TreeView实现树状下拉框
    Oracle : ORA 00933: SQL command not properly ended
    PostgreSQL && PostGIS
    基于ArcGIS开发3D立方体空间关系判断
  • 原文地址:https://www.cnblogs.com/xuziyu/p/12028690.html
Copyright © 2011-2022 走看看