Когда я соединяю два кадра данных как:
val secondDf= sparkSession.read.parquet(inputPath)
joinedDf = firstDf.join(secondDf, Seq("ID"), "left_outer")
Похоже, что Spark выполняет широковещательное соединение, и перетасовки не происходит.
Но как только я кеширую меньший Df:
val secondDf= sparkSession.read.parquet(inputPath).cache()
joinedDf = firstDf.join(secondDf, Seq("ID"), "left_outer")
Spark перетасовывает соединение, поэтому, кажется, никакого трансляционного объединения не происходит.
Мой вопрос: почему это происходит? И как я могу избежать перетасовки, когда я кеширую один фрейм данных?
Большое спасибо