我想要创建我的数据的随机子样本。
1.Spark的sample
函数(Link)是我想使用的接口。特别是因为它允许我切换采样是在有或没有替换的情况下完成。但是,执行此函数需要很长时间。根据问题Spark sample is too slow的答案,sample
似乎需要全表扫描。
1.TableSAMPLE似乎是一种更快的选择,尽管在有或没有替换的情况下切换的能力已经丧失。
我想知道sample
和TABLESAMPLE有什么不同,为什么TABLESAMPLE执行得比sample
快。TABLESAMPLE是否不需要全表扫描?
1条答案
按热度按时间6ljaweal1#
TABLESAMPLE
有三种采样方式:文档中说明了这一点:
如果随机性很重要,请始终使用TABLESAMPLE(百分比)。TABLESAMPLE(Num_Rows)不是一个简单的随机样本,而是使用LIMIT实现的。
因此,
sample
和TABLESAMPLE
是否相同的答案是否定的,但是TABLESAMPLE
和sample
使用百分比(分数)是相同的。如果您想阅读更多关于这方面的内容,Databricks提供了一些关于this的有用信息。