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

2018-03-21 20:00:40 +08:00
 linuxchild

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

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

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

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

3406 次点击
所在节点    程序员
2 条回复
SErHo
2018-03-21 20:50:35 +08:00
有压缩吗?
linuxchild
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 个文件,😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/440176

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX