Сохранить DataFrame в таблицу - производительность в Pyspark - PullRequest
3 голосов
/ 08 мая 2020

Я знаю, что есть два способа сохранить DF в таблицу в Pyspark:

1) df.write.saveAsTable("MyDatabase.MyTable")

2) df.createOrReplaceTempView("TempView")
   spark.sql("CREATE TABLE MyDatabase.MyTable as select * from TempView")

Есть ли разница в производительности при использовании оператора «CREATE TABLE AS» и «saveAsTable» при работе на большой распределенный набор данных?

1 Ответ

2 голосов
/ 08 мая 2020

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

saveAsTable с другой стороны, сохраняет данные во внешних хранилищах, таких как hdfs или s3 или adls. Это постоянное хранилище, оно действует дольше, чем объем SparkSession или Spark Application, и доступно для использования позже. Очевидно, что в рамках одного задания работа с кэшированными данными происходит быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...