从镶木地板文件中获取单个样本行的最有效方法

Most efficient way to get a single sample row from parquet files

我需要能够从存储在 parquet 中的多个数据集中获取单个样本行 format.I 不知道 parquet 文件是如何生成的(即使用什么键来优化存储)。此操作需要尽可能快速和高效。问题是这些数据集中的许多数据集的大小都是 TB,并且被拆分成数千个 parquet 文件。如果可能的话,我需要避免将整个数据集读入内存只是为了获得一行。 我知道像使用 limit 和 take 这样的 spark 方法,但这些方法涉及通过加载整个数据集来创建 spark dataframe/dataset 并限制返回值。所以我的问题是是否有一种有效的方法来执行此任务,或者 parquet 列优化格式是否使此任务本身成本高昂。

使用:

val singleRow: Row = myDataFrame.head()

它将 return 您数据的第一行,而不会在内存中加载更多内容。 如果您的输入数据是一个包含多个文件的文件夹,按字母顺序排序时,它将 return 第一个文件的第一行。

注意:还有 Dataset.first 方法,它只是一个别名:

def first(): T = head()