带有镶木地板和分区的Spark DataFrames

the*_*ing 7 apache-spark parquet apache-spark-sql

我还没有找到关于这个主题的更多信息,但是我们假设我们使用数据框来读取镶嵌文件中的10块火花自然会创建10个分区.但是当数据帧读入文件以处理它时,它不会处理大数据与分区的比率,因为如果它正在处理未压​​缩的文件,则块大小会大得多,这意味着分区也会更大.

所以让我澄清一下,压缩木地板(这些数字并不完全准确).1GB Par = 5 Blocks = 5个可以解压缩到5GB的分区,使其成为25个块/ 25个分区.但是,除非你重新分区1GB par文件,否则最好只有5个分区,它将是25个分区?或者我的逻辑错了.

重新分配以增加速度是否有意义?或者我在想这个错误.任何人都可以对此有所了解吗?

假设:

  • 1 Block = 1 Spark的分区
  • 1核心在1分区上运行

kos*_*tya 5

Spark DataFrame不会在内存中加载镶木地板文件.它使用Hadoop/HDFS API在每次操作期间读取它.因此,最佳分区数取决于HDFS块大小(与Parquet块大小不同!).

Spark 1.5 DataFrame分区镶嵌文件如下:

  • 每个HDFS块1个分区
  • 如果HDFS块大小小于Spark镶木地板块大小中的配置,则将为多个HDFS块创建分区,例如分区的总大小不小于镶木地板块大小