背景:
使用spark读写hudi on cos时发现读写速度非常慢,但因业务场景需要使用二级分区,必定会产生很多小文件,于是测试spark读取cos与hdfs上小文件的性能
环境:
spark 3.1.2
hudi 0.9
hadoop 3.2.2
腾讯云 cos
结果:
| 资源大小 | 数据量 | 目录数 | 耗时 |
|---|---|---|---|
| 5 * 8c * 16g | 48823737 | 二级分区,路径20054个 | cos :读取 33min ; 写入 19min ; hdfs :读取 23min ; 写入 10min ; |
| 4 * 8c * 16g | 48823737 | 二级分区,路径20054个 | cos:读取 41min ; 写入 20+min ; hdfs:读取 21min ; 写入 17min ; |
| 10 * 4c * 8g | 48823737 | 一级分区,路径206个 | cos:读取 < 1min ; 写入 3min ; hdfs:读取 < 1min ; 写入 1.5min ; |
结论:
读取大量小文件时,hdfs的性能比cos好一点,但远远低于读取同数据量的大文件;
所以,在分区内文件较小时,尽量减少分区数并合并文件,可以大大提高性能



