createOrReplaceTempView
создает (или заменяет, если это имя представления уже существует) лениво оцениваемое "представление", которое можно использовать как таблицу в Spark SQL. Он не материализуется до тех пор, пока вы не вызовете действие (например, count
) или не сохранится до memory
, если вы не вызовете cache
в наборе данных, который лежит в основе представления. Как следует из названия, это просто временное представление. Он теряется после завершения вашего приложения / сеанса.
saveAsTable
с другой стороны, сохраняет данные во внешних хранилищах, таких как hdfs
или s3
или adls
. Это постоянное хранилище, оно действует дольше, чем объем SparkSession или Spark Application, и доступно для использования позже. Очевидно, что в рамках одного задания работа с кэшированными данными происходит быстрее.