hadoop 数据格式和压缩算法

2019-10-14  本文已影响0人  邵红晓

splittable

表示压缩格式是否可以被分割,也就是说是否支持随机读。压缩数据是否能被mapreduce使用,压缩数据是否能被分割就很关键了。


image.png

彻底理解spark读取hdfs系统中文件压缩算法是snappy的parquet文件

  1. 对于数据读入阶段,例如sc.textFile,输入文件被划分为多少InputSplit就会需要多少初始Task。如果是snappy文件part-00000-b5507949-5fd0-4467-b6d3-5d0b67a388bc-c000.snappy.parquet
    有多少个文件就是多少并行度,然后再调用repartition(200)
  2. 在Map阶段partition数目保持不变。
  3. 在Reduce阶段,RDD的聚合会触发shuffle操作,聚合后的RDD的partition数目跟具体操作有关,例如repartition操作会聚合成指定分区数,还有一些算子是可配置的。
    建议:
  1. 用一些包含了压缩并且支持splittable的文件格式,比如SequenceFile,RCFile或者Avro文件。
  2. 提前把文件分成几个块,每个块单独压缩,这样就无需考虑splittable的问题了
上一篇 下一篇

猜你喜欢

热点阅读