通过抽样缩小数据规模
当您处理一个很大的数据集时,并不需要每次都用到全部数据。尤其在项目的早期阶段,您还在探索要做什么时,先在较小的数据子集上迭代,往往能更快推进。sdf_sample() 提供了一个便捷的方法。它接收一个 tibble,以及要返回的行比例。在本练习中,您需要进行不放回抽样。若要随机抽取数据集的十分之一,可以使用如下代码:
a_tibble %>%
sdf_sample(fraction = 0.1, replacement = FALSE)
由于抽样结果是随机的,而且您很可能希望复用缩小后的数据集,通常会使用 compute() 将结果存储为另一个 Spark 数据帧。
a_tibble %>%
sdf_sample(<some args>) %>%
compute("sample_dataset")
为确保结果可复现,您还可以通过 seed 参数设置随机数种子。这样每次运行代码都会得到相同的随机数据集。种子取值不重要;任选一个您喜欢的正整数即可。
本练习是课程的一部分
R 中使用 sparklyr 的 Spark 入门
练习说明
系统已为您创建了名为 spark_conn 的 Spark 连接。基于存储在 Spark 中的曲目信息,已预先定义了一个 tibble:track_metadata_tbl。
- 使用
sdf_sample()对曲目信息进行 1% 的不放回抽样。- 将
20000229传给seed参数以设置随机种子。
- 将
- 计算结果,并将其存入名为
"sample_track_metadata"的表中。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# track_metadata_tbl has been pre-defined
track_metadata_tbl
track_metadata_tbl %>%
# Sample the data without replacement
___ %>%
# Compute the result
___