Left joins
除了操作单个数据框,sparklyr 还允许您将两个数据框连接在一起。关于如何使用 dplyr 语法连接表的完整讲解,请参见课程 Joining Data with dplyr。在本章余下内容中,您将看到一些在 Spark 中实现这一操作的示例。
左连接会取第一个表中的所有值,并在第二个表中查找匹配项。若找到匹配,就添加第二个表中的数据;若未找到,则填充缺失值。其原理如下图所示。

左连接是一种变更式连接(mutating join),因为它只是向第一个表添加新列。要在 sparklyr 中执行左连接,调用 left_join(),传入两个 tibble,以及用于连接的列名字符向量。
left_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
用文字描述这种连接时,表名的顺序会反过来。上述连接可表述为:"another_tibble 被左连接到 a_tibble"。
本练习引入了另一个 Spark DataFrame,包含描述每位艺术家的术语。这些术语从较为通用的 "pop",到更小众的风格,如 "swiss hip hop" 和 "mathgrindcore",不一而足。
本练习是课程的一部分
R 中使用 sparklyr 的 Spark 入门
练习说明
已经为您创建了名为 spark_conn 的 Spark 连接。存储在 Spark 中的曲目信息和艺术家术语分别已作为 tibble 预定义为 track_metadata_tbl 和 artist_terms_tbl。
- 使用左连接,以
artist_id列为键,将艺术家术语连接到曲目信息上。- 被连接的表
track_metadata_tbl放在第一个参数。 - 连接到第一个表的表
artist_terms_tbl放在第二个参数。 - 将结果赋值给
joined。
- 被连接的表
- 使用
sdf_dim()查看连接后的表有多少行和多少列。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# track_metadata_tbl and artist_terms_tbl have been pre-defined
track_metadata_tbl
artist_terms_tbl
# Left join artist terms to track metadata by artist_id
joined <- ___(___, ___, by = ___)
# How many rows and columns are in the joined table?
___