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

spark 写文件时,同一份数据,保存到不同数量文件的时候,最终大小不一样,是怎么回事

  •  
  •   linuxchild · 2018-03-21 20:00:40 +08:00 · 3405 次点击
    这是一个创建于 2434 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数据是同一份数据,xxx.write.csv(yyy)和 xxx.repartition(13).write.csv(yyy)输出后,文件夹的大小居然差了两倍多;

    数据量的大小大概是 3G,后者大概是 7G

    相差的有点大,好奇是咋回事

    木有搜到啥资料,有没有朋友指点一下

    第 1 条附言  ·  2018-03-22 15:27:17 +08:00
    刚刚发现格式那写错了,我采用的格式是 parquet 格式
    2 条回复    2018-03-22 15:26:47 +08:00
    SErHo
        1
    SErHo  
       2018-03-21 20:50:35 +08:00 via iPhone
    有压缩吗?
    linuxchild
        2
    linuxchild  
    OP
       2018-03-22 15:26:47 +08:00
    @SErHo 两者格式都一样,parquet+snappy ;

    目前找到了一个相关的资料,http://litaotao.github.io/boost-spark-application-performance 这里提到了一句

    “在 partition 小于 2000 和大于 2000 的两种场景下,Spark 使用不同的数据结构来在 shuffle 时记录相关信息,在 partition 大于 2000 时,会有另一种更高效 [压缩] 的数据结构来存储信息。所以如果你的 partition 没到 2000,但是很接近 2000,可以放心的把 partition 设置为 2000 以上。”

    如果不用 repartition 的话,的确是超过了 2k 个文件,😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1008 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:16 · PVG 04:16 · LAX 12:16 · JFK 15:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.