【问题标题】:In spark, how to view n row of data without scanning of whole partition in spark在spark中,如何在不扫描整个分区的情况下查看n行数据
【发布时间】:2019-12-16 20:55:35
【问题描述】:

我有一个包含 6k 分区的 hive parquet 表(s3 顶部的外部表)。在数据探索中,我们想要查看示例数据,假设 1/2/10 记录而不执行任何转换或操作。

有没有办法只限制一个分区并限制/显示 n 条记录,而不是通过 6k 分区(如果集群很小,只打印 10 行将花费大量时间)。我想过mapPartitionsWithIndex,但它仍然会遍历所有分区

def mpwi(index: Int, iter: Iterator[Row]): Iterator = {
  if (index == 1) iter
  else Iterator()
}

【问题讨论】:

  • 你可以使用RDD对象的sample()方法。
  • 让我试试让你知道。

标签: apache-spark


【解决方案1】:

你应该试试limit。例如:

val df = spark.sql("select * from your_table")
df.limit(10).show // Retrieves only 10 rows

这应该比加载整个表更高效。如果您没有获得预期的性能提升,请在此处粘贴逻辑/物理查询计划,以便我们对其进行分析。你可以用df.explain(true)来做到这一点

【讨论】:

  • 不,这行不通。限制在选择 n 行之前进行完整扫描
  • 那么我假设您有一些比纯选择更复杂的操作。正如我所说,查询计划将有助于您找到解决方案。
猜你喜欢
  • 1970-01-01
  • 2015-04-16
  • 2021-05-22
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 2019-06-13
相关资源
最近更新 更多