首页 理论教育 Parquet数据格式的内部分片机制

Parquet数据格式的内部分片机制

时间:2023-07-02 理论教育 版权反馈
【摘要】:Spark应用程序在Spark集群上运行,数据源是分布式的,Spark在运行时在不同的结点需并行处理各个结点分区的数据。例如,在Hadoop文件中,Hadoop文件的分区数Split的大小是由文件的总大小和分区数决定的;而在Parquet中,以RowGroup为基本单位,parquet.block.size设置parquet row group大小,也就设置了分区的大小,Spark SqlNewHa-doopPartition获取的分区是从Parquet中得到的。同样的,Spark从各种类型数据源(例如Hadoop、Parquet、JDBC、RDD…

Parquet数据格式的内部分片机制

Spark应用程序在Spark集群上运行,数据源是分布式的,Spark在运行时在不同的结点需并行处理各个结点分区的数据。例如,在Hadoop文件中,Hadoop文件的分区数Split的大小是由文件的总大小和分区数决定的;而在Parquet中,以RowGroup为基本单位,parquet.block.size设置parquet row group大小,也就设置了分区的大小,Spark SqlNewHa-doopPartition获取的分区是从Parquet中得到的。同样的,Spark从各种类型数据源(例如Hadoop、Parquet、JDBC、RDD…)根据各自的分区算法获取到数据源的数据分区,数据分区具备数据本地性,数据存放在各个分布式结点上,Spark应用程序就要在各个结点上并行处理不同的分区数据,一个分区对应一个执行任务,有多少个分区就有多少个任务并行度,进行分布式计算,并行处理数据更快。

从Parquet的角度考虑,在做分片的时候,Parquet分片本身会变成Partitions,在Spark SQL的源码中的SqlNewHadoopPartition类会继承SparkPartition,在SqlNewHadoopPartition的getPartitions中的inputFormatClass实际上是Parquet包中的ParquetInputFormat,getPartitions中的inputFormat的getSplits是ParquetInputFormat的getSplits,在Spark SQL中Parquet覆盖了SparkPartition的中getSplits的默认行为。(www.xing528.com)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈