开始使用免费开始使用

Left joins

除了操作单个数据框,sparklyr 还允许您将两个数据框连接在一起。关于如何使用 dplyr 语法连接表的完整讲解,请参见课程 Joining Data with dplyr。在本章余下内容中,您将看到一些在 Spark 中实现这一操作的示例。

左连接会取第一个表中的所有值,并在第二个表中查找匹配项。若找到匹配,就添加第二个表中的数据;若未找到,则填充缺失值。其原理如下图所示。

A left join, explained using table of colors.

左连接是一种变更式连接(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_tblartist_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?
___
编辑并运行代码