Можно ли получить доступ к другому фрейму данных во время итерации по фрейму данных?

#scala #dataframe #apache-spark #apache-spark-sql

#scala #фрейм данных #apache-spark #apache-spark-sql

Вопрос:

При итерации по фрейму данных с использованием .foreach в Spark Scala возможно ли получить доступ к другому фрейму данных или загрузить фрейм данных из SparkSQL для сравнения? Например, DF1 имеет доступные дни, и если день помечен как недоступный в DF1, но отображается в DF2, я бы хотел проигнорировать эту строку DF1. У меня работает логика, когда я выполняю a .collect для DF1 и выполняю итерацию, но DF1 будет большим набором данных, и я не хочу возвращать все эти данные обратно в драйвер.

 DF1 Schema
 |-- id: integer (nullable = false)
 |-- monday: boolean (nullable = false)
 |-- tuesday: boolean (nullable = false)
 |-- wednesday: boolean (nullable = false)
 |-- thursday: boolean (nullable = false)
 |-- friday: boolean (nullable = false)
 |-- saturday: boolean (nullable = false)
 |-- sunday: boolean (nullable = false)

 DF2 Schema
 |-- start: timestamp (nullable = false)
 |-- end: timestamp (nullable = false)
 |-- dayStart: string (nullable = false)
 |-- dayEnd: string (nullable = false)
 

Комментарии:

1. Используйте join , когда ваш запрос включает отношения между двумя фреймами данных. Избегайте повторения строк.

2. @mck на основе схем, о которых я упоминал выше, как бы вы предложили присоединиться? или я должен добавить столбцы в один из фреймов данных, чтобы я мог выполнить соединение?

3. @saragallagher вы можете выполнить некоторые преобразования, чтобы создать столбец, который вы можете использовать для сравнения при выполнении объединения, и это не будет сложно. вы могли бы сделать это легко. Также попытайтесь предоставить некоторые примеры данных, чтобы кто-нибудь мог вам помочь.