gpt4 book ai didi

java - Spark-sample() 函数复制数据?

转载 作者:行者123 更新时间:2023-12-02 03:22:33 27 4
gpt4 key购买 nike

我想随机选择数据的一个子集,然后将其限制为 200 个条目。但是使用 sample() 函数后,我得到了重复的行,但我不知道为什么。让我告诉你:

DataFrame df= sqlContext.sql("SELECT * " +
" FROM temptable" +
" WHERE conditions");
DataFrame df1 = df.select(df.col("col1"))
.where(df.col("col1").isNotNull())
.distinct()
.orderBy(df.col("col1"));
df.show();
System.out.println(df.count());

到目前为止,一切都还好。我得到输出:

+-----------+
|col1 |
+-----------+
| 10016|
| 10022|
| 100281|
| 10032|
| 100427|
| 100445|
| 10049|
| 10070|
| 10076|
| 10079|
| 10081|
| 10082|
| 100884|
| 10092|
| 10099|
| 10102|
| 10103|
| 101039|
| 101134|
| 101187|
+-----------+
only showing top 20 rows

10512

有 10512 条记录,无重复。然后!

df = df.sample(true, 0.5).limit(200);
df.show();
System.out.println(users.count());

这将返回 200 行充满重复项的行:

+-----------+
|col1 |
+-----------+
| 10022|
| 100445|
| 100445|
| 10049|
| 10079|
| 10079|
| 10081|
| 10081|
| 10082|
| 10092|
| 10102|
| 10102|
| 101039|
| 101134|
| 101134|
| 101134|
| 101345|
| 101345|
| 10140|
| 10141|
+-----------+
only showing top 20 rows

200

谁能告诉我为什么?这真让我抓狂。谢谢!

最佳答案

您明确要求提供可替换的样本,因此获得重复项不会出现意外:

public Dataset<T> sample(boolean withReplacement, double fraction)

关于java - Spark-sample() 函数复制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39414742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com