#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 вы можете выполнить некоторые преобразования, чтобы создать столбец, который вы можете использовать для сравнения при выполнении объединения, и это не будет сложно. вы могли бы сделать это легко. Также попытайтесь предоставить некоторые примеры данных, чтобы кто-нибудь мог вам помочь.