使用 pyspark 检查 dbfs 中镶木地板表长度的最佳方法?

Posted

技术标签:

【中文标题】使用 pyspark 检查 dbfs 中镶木地板表长度的最佳方法?【英文标题】:Most optimal method to check length of a parquet table in dbfs with pyspark? 【发布时间】:2021-12-22 21:31:42 【问题描述】:

我有一个可以用 pyspark 读取的 dbfs 表,但我只需要知道它的长度 (nrows)。我知道我可以读取文件并通过table.count() 获取它,但这需要一些时间。

有没有更好的方法来解决这个问题?

【问题讨论】:

Parquet 文件存储每个行组的行数,并在文件页脚中作为单独的计数。 Spark 能够通过从那里获取计数而不是扫描整个文件来“作弊”,从而使 count() 操作非常高效(当然,除非您有数百万个文件)。 【参考方案1】:

恐怕不会。

由于您使用的是 dbfs,我想您正在使用带有 Databricks 的 Delta 格式。因此,理论上,您可以检查元存储,但是:

元存储不是最新信息的真实来源 Delta 表

https://docs.delta.io/latest/delta-batch.html#control-data-location

【讨论】:

以上是关于使用 pyspark 检查 dbfs 中镶木地板表长度的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用 pyspark 插入镶木地板文件时,Hive 表需要对每个新分区进行“修复”

Pyspark 无法在 hive 中创建镶木地板表

使用 Pyspark 在 s3 中写入镶木地板文件时出错

当我在蜂巢中写入镶木地板表时出现 Pyspark 错误

如何使用pyspark递归获取存储在dbfs文件夹中的Excel文件?

在 pyspark 中通过检查加载数据框给了我空的数据框