通过 PRESTO 连接器选择随机数据样本
Posted
技术标签:
【中文标题】通过 PRESTO 连接器选择随机数据样本【英文标题】:SELECT random sample of data via PRESTO connector 【发布时间】:2020-12-22 21:11:05 【问题描述】:我目前正在寻找如何从表中获取随机数据样本的最佳方法(例如在 HIVE 中)。我知道 PRESTO 提供了 RANDOM() 函数或 TABLESAMPLE BERNOULLI/SYSTEM。问题是查询记录数较多的表时,耗时较长,不适合与JayDeBeApi合作,可能会关闭连接,等待响应时间过长。
我更喜欢使用 TABLESAMPLE BERNOULLI/SYSTEM,它将要获取的记录的百分比作为参数。与ORACLE、SAP或MSSQL数据库相比,可以通过精确的百分比,即0.003123412%,PRESTO不允许你,尽管功能非常相似,一切都在1-100%的范围内转换。
有人知道如何解决这个问题吗?我宁愿避免与 TABLESAMPLE BERNOULLI/SYSTEM 合作的 limit 子句,这可能无法按预期工作。
【问题讨论】:
【参考方案1】:使用 Presto 341(即将发布),您只需
... FROM my_table TABLESAMPLE BERNOULLI (0.01)
正如@michal.kyjovsky 指出的那样,旧版本有一个错误,需要使用科学记数法来获得低于百分比的采样率
... FROM my_table TABLESAMPLE BERNOULLI (0.01e0)
【讨论】:
【参考方案2】:这可以通过以科学计数法传递数字来获得。
【讨论】:
这是TABLESAMPLE BERNOULLI (0.1)
今天无法正常工作的解决方法。当我正在修复时,请在 github.com/prestosql/presto/issues/new 提交一个新问题。以上是关于通过 PRESTO 连接器选择随机数据样本的主要内容,如果未能解决你的问题,请参考以下文章