1. Nauka
  2. /
  3. Kursy
  4. /
  5. R 中使用 sparklyr 的 Spark 入门

Connected

Ćwiczenie

存储中间结果

正如您在第 1 章中所看到的,在 R 与 Spark 之间拷贝数据本质上非常慢。这意味着像上一练习那样收集数据只能在确有必要时执行。

管道运算符非常适合把数据处理命令串联起来,但通常情况下,您不可能把整套分析完全写成一个长链。比如下面的做法就很糟糕,因为您几乎无法调试代码。

final_results <- starting_data %>%
  # 743 步连续管道
  # ... %>%
  collect()

这带来一个两难:您需要存储中间计算结果,但又不想 collect(),因为它很慢。解决方案是使用 compute() 来执行计算,但把结果存成 Spark 上的临时数据帧。compute() 接受两个参数:一个 tibble,以及用于在 Spark 中存放结果的数据帧名称。

a_tibble %>%
  # 一些计算 %>%
  compute("intermediate_results")

Instrukcje

100 XP

已为您创建名为 spark_conn 的 Spark 连接。指向存储于 Spark 的曲目元数据的 tibble 已预定义为 track_metadata_tbl。

  • 过滤 track_metadata_tbl 中 artist_familiarity 大于 0.8 的行。
  • 使用 compute() 计算结果。
    • 将结果存为名为 "familiar_artists" 的 Spark 数据帧。
    • 将返回值赋给 R tibble,命名为 computed。
  • 使用 src_tbls() 查看可用的 Spark 数据集。
  • 打印 computed 的 class()。注意:与 collect() 不同,compute() 返回的是远程 tibble,数据仍存放在 Spark 集群中。