【问题标题】:Most efficient way to get a single sample row from parquet files从镶木地板文件中获取单个样本行的最有效方法
【发布时间】:2019-12-04 13:02:09
【问题描述】:

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

【问题讨论】:

    标签: apache-spark parquet


    【解决方案1】:

    用途:

    val singleRow: Row = myDataFrame.head()
    

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

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

    def first(): T = head()
    

    【讨论】:

      猜你喜欢
      • 2018-07-03
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2023-02-19
      • 2021-11-10
      相关资源
      最近更新 更多