Как заставить Spark оценивать операции DataFrame inline

СогласноSpark RDD документы:

Все преобразования в Spark являются ленивыми, поскольку они не сразу вычисляют свои результаты ... Такая конструкция позволяет Spark работать более эффективно.

Есть моменты, когда мне нужно сделать определенные операции на моих фреймах данныхпрямо тогда и сейчас, Но потому, что операции с даннымилениво оценилmsgstr "(как указано выше), когда я пишу эти операции в коде, очень мало гарантий, что Sparkна самом деле выполнить эти операции в соответствии с остальной частью кода. Например:

val someDataFrame : DataFrame = getSomehow()
val someOtherDataFrame : DataFrame = getSomehowAlso()
// Do some stuff with 'someDataFrame' and 'someOtherDataFrame'

// Now we need to do a union RIGHT HERE AND NOW, because
// the next few lines of code require the union to have
// already taken place!
val unionDataFrame : DataFrame = someDataFrame.unionAll(someOtherDataFrame)

// Now do some stuff with 'unionDataFrame'...

Так что мой обходной путь для этого (до сих пор) должен был бежать.show() или же.count() сразу же после моего чувствительного ко времени фрейма данных, вот так:

val someDataFrame : DataFrame = getSomehow()
val someOtherDataFrame : DataFrame = getSomehowAlso()
// Do some stuff with 'someDataFrame' and 'someOtherDataFrame'

val unionDataFrame : DataFrame = someDataFrame.unionAll(someOtherDataFrame)
unionDataFrame.count()  // Forces the union to execute/compute

// Now do some stuff with 'unionDataFrame'...

...которыйсил Spark, чтобы выполнить операцию dataframe прямо там, в строке.

Мне это кажется ужасно хакерским / грязным. Поэтому я спрашиваю:Есть ли более общепринятый и / или эффективный способсила Операции с кадрами данных происходят по требованию (и не лениво оцениваются)?

Ответы на вопрос(2)

Ваш ответ на вопрос