Левые соединения
Помимо работы с отдельными таблицами, sparklyr позволяет объединять два датафрейма. Подробное описание способов соединения таблиц с помощью синтаксиса dplyr приведено в курсе Joining Data with dplyr. В оставшейся части этой главы вы рассмотрите несколько примеров того, как это делается в Spark.
При левом соединении берутся все значения из первой таблицы и ищутся совпадения во второй. Если совпадение найдено — данные из второй таблицы добавляются; если нет — вместо них подставляются пропущенные значения. Принцип показан на схеме ниже.

Левое соединение относится к мутирующим соединениям, поскольку оно просто добавляет столбцы к первой таблице. Чтобы выполнить левое соединение в sparklyr, вызовите left_join(), передав два тиббла и символьный вектор столбцов, по которым выполняется соединение.
left_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
При словесном описании этого соединения названия таблиц меняются местами. Данное соединение можно описать так: «another_tibble присоединяется к a_tibble левым соединением».
В этом упражнении используется ещё один Spark DataFrame, содержащий теги, описывающие каждого исполнителя. Они варьируются от довольно общих, например «pop», до узкоспецифичных жанров — таких как «swiss hip hop» и «mathgrindcore».
Это упражнение является частью курса
Введение в Spark с sparklyr на R
Инструкции к упражнению
Подключение к Spark уже создано и доступно как spark_conn. Тибблы, связанные с метаданными треков и тегами исполнителей, хранящимися в Spark, предварительно определены как 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?
___