0
自分のデータのサブセットをランダムに選択し、それを200エントリに制限したいとします。しかし、sample()
関数を使用した後、私は重複した行を取得しています。なぜかわかりません。私にあなたを見せてあげてください:データを複製するspark - 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());
これまではすべてがOKです。
+-----------+
|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
誰が、なぜ教えてもらえますか?これは私を夢中にさせている。ありがとうございました!