我需要能够从以镶木地板格式存储的多个数据集中获取单个样本行,但我不知道镶木地板文件是如何生成的(即使用什么键来优化存储)。该操作需要尽可能快和高效。问题在于,这些数据集中的许多数据集都是TB大小,并且被拆分为数千个实木复合地板文件。如果可能,我需要避免将整个数据集读取到内存中只是为了获得一行。 我知道诸如使用limit and take的spark方法,但是这些方法涉及通过加载整个数据集来创建spark数据帧/数据集,并限制返回值。因此,我的问题是,有没有一种有效的方法来执行此任务,或者镶木地板优化的格式会使此任务固有地成本很高。
答案 0 :(得分:0)
使用:
val singleRow: Row = myDataFrame.head()
它将返回数据的第一行,而不会在内存中加载更多内容。 如果您输入的数据是一个包含多个文件的文件夹,则按字母顺序排序时,它将返回第一个文件的第一行。
注意:还有Dataset.first
方法,它只是一个别名:
def first(): T = head()