Lea*_*nis 2 scala dataframe apache-spark apache-spark-sql
我有一个包含十亿条记录的数据框,我想从中取出 10 条记录。
哪种方法更好更快?
df.take(10)或者df.limit(10).collect()?
这两种方法将产生相同的性能,仅仅是因为它们的实现是相同的。
来自github 上的Spark 实现
def take(n: Int): Array[T] = head(n)
Run Code Online (Sandbox Code Playgroud)
而 head 的实现是:
def head(n: Int): Array[T] = withAction("head", limit(n).queryExecution)(collectFromPlan)
Run Code Online (Sandbox Code Playgroud)
如您所见, head 完全是通过使用limit+ 实现的collect。
因此它们导致相同的性能,您测量的差异必须是随机变化,尝试多次运行实验以克服它。
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |