Я хочу точно знать, что я могу сделать в Spark, не запуская вычисление Spark RDD/DataFrame.
Насколько я понимаю, только действия запускают выполнение преобразований для создания DataFrame. Проблема в том, что я не могу найти полный список искровых действий.
В документации Spark перечислены некоторые действия, но это не исчерпывающий список. Например шоу там нет, но оно считается акцией.
Я не думаю, что существует исчерпывающий список всех действий Spark. Но я думаю, что полезно построить мысленную модель разницы и при необходимости обращаться к документации.
Для преобразования нет ожидаемого результата от вызова одной функции. Только когда вы вызываете действие, Spark начинает вычислять результаты. Существует три вида действий:
(Отрывок из книги Spark: The Definitive Guide)
В предоставленной вами ссылке перечислены некоторые действия, но также включены преобразования.
Все методы, аннотированные в действии @group, являются действиями. Их можно найти в виде списка здесь, в scaladocs . Их также можно найти в источнике, где определен каждый метод, и выглядит следующим образом:
* @group action
* @since 1.6.0
*/
def show(numRows: Int): Unit = show(numRows, truncate = true)
Кроме того, некоторые другие методы не имеют этой аннотации, но также выполняют быструю оценку: те, которые вызывают withAction. Например, контрольная точка фактически выполняет действие, но не сгруппирована как таковая в документации:
private[sql] def checkpoint(eager: Boolean, reliableCheckpoint: Boolean): Dataset[T] = {
val actionName = if (reliableCheckpoint) "checkpoint" else "localCheckpoint"
withAction(actionName, queryExecution) { physicalPlan =>
val internalRdd = physicalPlan.execute().map(_.copy())
if (reliableCheckpoint) {
Чтобы найти их всех
Отвечая на ваш второй вопрос, методы
pyspark.sql.DataFrame
— это не все действия.count
иshow
— оба действия;select
иjoin
не являются действиями