Spark写parquet文件时,经过shuffle和不shuffle数据量 不同,shuffle后parquet文件压缩比降低

weixin_38063369 2018-06-05 10:52:22
Spark写parquet文件时,经过shuffle和不shuffle数据量 不同,shuffle后parquet文件压缩比降低 最近在做测试时遇到一个奇怪的问题,不能理解,问题描述如下:   对相同的一份数据进行读取并写出为parquet文件时,对数据集进行shuffle和不进行shuffle后生成的parquet文件大小不同,且相差较多。具体操作如下: 原始数据集为snappy压缩的46G parquet文件,文件大小从11M~1.5G不等,共100个文件,对文件读取后写出为不压缩的parquet文件: val productDF = spark.read.parquet("/ingest/product/20180202/22-43/") //读取结果集后直接写出,不进行shuffle productDF   .write.mode(org.apache.spark.sql.SaveMode.Overwrite)   .option("compression", "none")   .parquet("/processed/product/20180215/04-37/read_repartition_write/nonewithoutshuffle") //读取结果集后,repartition为500个文件,shuffle后写出 productDF..repartition(500).write.mode(org.apache.spark.sql.SaveMode.Overwrite)   .option("compression", "none")   .parquet("/processed/product/20180215/04-37/read_repartition_write/nonewithshuffle") 两次程序执行写出的结果文件,大小不同。其中第一次不经过shuffle直接写出,生成parquent文件为80G,而第二次经过shuffle后生成文件总大小为283G。   同时我对80G的文件再次进行读取并repartition(500),生成283G文件。有两个问题不太明白: 第一个是为什么spark在repartitioning/shuffle写出parquet文件后文件总大小会增大 第二个问题是如何有效地shuffle spark中的数据,才能有效地对parquent文件进行编码/压缩?
...全文
178 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧