Apache spark 在select语句期间,S3上火花读取拼花地板的正常读取数据量是多少?

Apache spark 在select语句期间,S3上火花读取拼花地板的正常读取数据量是多少?,apache-spark,hadoop,amazon-s3,parquet,databricks,Apache Spark,Hadoop,Amazon S3,Parquet,Databricks,我们有一个130GB和4000列的表。当我们选择其中两列时,我们的Spark UI报告总共30GB的读取。但是,如果我们选择这两列并将它们存储为单独的数据集,则数据集的总大小仅为17MB。鉴于拼花地板是柱状存储,有些东西似乎不能正常工作。我已经找到了,但我不确定如何进一步诊断,以及如何尝试减少所需的I/O量 据我所知,列式存储的好处在于,每一列都可以或多或少地相互独立地读取 我们在Databricks上运行Hadoop2.7.X。它出现在databricks(spark 2.4/3.0)的6.X

我们有一个130GB和4000列的表。当我们选择其中两列时,我们的Spark UI报告总共30GB的读取。但是,如果我们选择这两列并将它们存储为单独的数据集,则数据集的总大小仅为17MB。鉴于拼花地板是柱状存储,有些东西似乎不能正常工作。我已经找到了,但我不确定如何进一步诊断,以及如何尝试减少所需的I/O量

据我所知,列式存储的好处在于,每一列都可以或多或少地相互独立地读取


我们在Databricks上运行Hadoop2.7.X。它出现在databricks(spark 2.4/3.0)的6.X和7.X版本上。

当spark读取拼花地板时,它实际上只读取您请求的列。也许30GB是指未压缩的数据,17MB是压缩的?默认情况下,spark将编写压缩的拼花地板。不,这两个数据都是相同的(压缩的)数据也许您可以启用调试日志记录(如您所引用问题的答案中所建议的),然后查看?首先,我将为
org.apache.hadoop.ParquetFileReader
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat
设置调试级别,具体取决于您读取表格的方式。@pascalwhoop您能显示重现此内容的代码吗?