1. Learn
  2. /
  3. 课程
  4. /
  5. R 中使用 sparklyr 的 Spark 入门

Connected

道练习

大数据,小 tibble

在上一个练习中,您把数据复制到 Spark 时,copy_to() 返回了一个值。这个返回值是一种特殊的 tibble(),它本身并不包含任何数据。要解释这一点,您需要先了解 tidyverse 包存储数据的方式。Tibble 通常只是 data.frame 的一种变体,打印方式更友好。然而,dplyr 也允许它们指向远程数据源的数据,例如数据库,或者——就像这里——Spark。对于远程数据集,tibble 对象只是存储到远程数据的连接。后面会更详细地讨论这一点,但现在重要的是:即使数据集很大,tibble 对象本身的大小也很小。

在 Spark 端,数据存储在名为 DataFrame 的变量中。这与 R 的 data.frame 变量类型大致等价。(不过列的类型命名略有不同——例如 numeric 列在这里称为 DoubleType 列。)在整门课程中,除非需要在 data.frame 和 DataFrame 之间加以区分,一般会使用"data frame"这一术语。由于这些类型也类似于数据库表,有时也会用"表"来描述这种矩形数据。

使用带有 Spark 连接和 Spark 数据帧名称字符串的 tbl() 将返回与您使用 copy_to() 时相同的 tibble 对象。

本练习中您将看到一个很有用的工具:pryr 包中的 object_size() 函数。它可以显示某个对象占用了多少内存。

说明

100 XP

已为您创建名为 spark_conn 的 Spark 连接。包含 1,000 条曲目元数据的表 "track_metadata" 已存储在 Spark 集群中。

  • 使用 tbl() 连接到 "track_metadata" 表。将结果赋值给 track_metadata_tbl。
  • 在 track_metadata_tbl 上使用 dim() 查看数据集有多大。
  • 在 track_metadata_tbl 上使用 object_size() 查看 tibble 有多小。