V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dhairoot
V2EX  ›  Hadoop

有很多 xml 文件,如何按照文件去并行,而不是一个大文件切分成小块来做并行计算呢?

  •  
  •   dhairoot · 2018-11-23 21:36:04 +08:00 · 3144 次点击
    这是一个创建于 1952 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有很多 xml 文件,如何按照文件去并行,而不是一个大文件切分成小块来做并行计算呢? 比如现在我有很多的 xml 文件,我想要做的是利用 spark 去同时解析多个 xml 文件,而不是一个 xml 文件被且分成小块去处理

    10 条回复    2018-12-09 23:20:40 +08:00
    kex0916
        1
    kex0916  
       2018-11-24 22:59:04 +08:00
    spark 读取的话可以自己实现分区切分的规则,也可以采用自己实现 FileInputFormat 将 isSplitable 设置成 false,然后使用 hadoop rdd api.
    dhairoot
        2
    dhairoot  
    OP
       2018-11-25 07:47:12 +08:00 via Android
    @kex0916 文件都是本地的,每台电脑有一部分,这样的也可以吗
    kex0916
        3
    kex0916  
       2018-11-25 13:49:09 +08:00
    不能保证每台机器上都能至少起一个 executor,最好还是放到 hdfs 这种分布式文件系统上
    ls2995
        4
    ls2995  
       2018-11-28 09:03:42 +08:00
    我跟你的任务咋这么一致呢,我是大概 8T 的 zip 文件在 hdfs 上,里面也都是 xml,我需要解压后再在集群上做解析存到 hbase,我解压就是看你发的那个链接写出来的,但是性能确实不太好,你最后是怎么解决的?
    dhairoot
        5
    dhairoot  
    OP
       2018-12-03 10:50:14 +08:00 via Android
    @ls2995 兄弟你是做什么项目呀
    ls2995
        6
    ls2995  
       2018-12-03 14:25:28 +08:00
    @dhairoot 证券数据,解析入库后分析
    dhairoot
        7
    dhairoot  
    OP
       2018-12-07 09:31:27 +08:00 via Android
    @ls2995 我后来就是在每一台电脑上分别跑处理程序
    ls2995
        8
    ls2995  
       2018-12-08 22:28:27 +08:00
    @dhairoot 我用 spark 实现了,但是性能不是很好,我们公司要求有点高,集群性能不太好吧还要求速度,所以分别跑不太现实,而且每周还会来 3T 左右的 zip 文件,必须要尽快解压分析入库,现在正写 spark 解析 xml 呢,有点烦躁
    dhairoot
        9
    dhairoot  
    OP
       2018-12-09 18:37:09 +08:00 via Android
    @ls2995 加油,搞完了可以写篇文章
    ls2995
        10
    ls2995  
       2018-12-09 23:20:40 +08:00
    @dhairoot 你是什么项目啊? spark 解析写咋样了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2820 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:19 · PVG 08:19 · LAX 17:19 · JFK 20:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.