Эффективность Hive и PySpark - много рабочих мест или одна работа? - PullRequest
1 голос
/ 14 апреля 2020

У меня есть вопрос о внутренней работе Spark.

Если я определяю фрейм данных из таблицы Hive, например, df1 = spark_session.table ('db.table'); эта таблица читается только один раз?

Что я имею в виду, если я создал 4 или 5 новых фреймов данных из df1 и вывел их все в отдельные файлы, это эффективнее, чем запускать их все как разные искровые файлы?

Является ли это более эффективным, чем приведенная ниже диаграмма? Это приводит к меньшей нагрузке на Hive, потому что мы читаем данные один раз, или это теперь, как это работает?

enter image description here

Чем это: enter image description here

1 Ответ

1 голос
/ 14 апреля 2020

Если я определяю фрейм данных из таблицы Hive, например, df1 = spark_session.table ('db.table'); эта таблица читается только один раз?

  • Вам необходимо кэшировать () df1 = spark_session.table('db.table').cache(), тогда spark будет читать таблицу один раз и кэшировать данные при выполнении действия.

  • Если вы выводите df1 в 4 or 5, другие файлы также запускаются только для чтения данных из таблицы улья, поскольку мы уже кэшировали данные.


Is это более эффективно, чем приведенная ниже диаграмма? Это приводит к меньшей нагрузке на Hive, потому что мы читаем данные один раз, или вот как это работает?

  • Да, на вашей первой диаграмме мы сохраняем меньше загрузите hive, так как мы читаем данные один раз.

  • На вашей второй диаграмме , если мы пишем отдельные задания спарка для каждого файла, что означает, что мы читаем таблицу кустов в каждой работе.

...