А вопрос хороший, практический все инфраструктурные настройки для меня скрыты и этим вопросом я раньше не задавался и хватало оптимизации самих запросов и udf-ок. В Spark UI я так понимаю этих настроек не видно (ну либо они не отображаются т.к. там все по дефолту)
Скажите пж. если использовать hive internal table для долговременного хранения , то будет ли hive управлять размерами файлов и оптимально их создавать согласно размеру блока ?
а так да, разбивать будет, единственно что для больших таблиц лучше тюнить размер блока orc, у меня при достижении ~4к блоков вычитка занимала где-то пол часа, когда смерджили блоки orc время упало до 6-8 мин
Скажите пж. если использовать hive internal table для долговременного хранения , то будет ли hive управлять размерами файлов и оптимально их создавать согласно размеру блока ?
В общем случае - нет, не будет. Если вы криво будет их создавать, то файлы могут быть очень маленькими. Или у вас будет ETL процесс, который плодит много файлов. Например, вы укажиет большое количество бакетов по ключу, а данных у вас суммарно мало, тогда размажется на много маленьких файлов и много других кейсов.
Есть найтройки, которые позволяют мержить очень маленькие файлы. Но это не особо спасает.
В пределах одного этапа несложно, однако нужно как то хранить состояние каждого из этапов (промежуточные данные, статусы и т.д.), чтобы если следующие этапы не могут завершиться, то процесс знает с какой точки возобновить обработку и с какими промежуточными данными.
Ну если хочется транзакций и роллбэков, то мб delta? Или не спарк?
In Spark 3.0 and below, SparkContext can be created in executors. Since Spark 3.1, an exception will be thrown when creating SparkContext in executors. You can allow it by setting the configuration spark.executor.allowSparkContext when creating SparkContext in executors.
In Spark 3.0 and below, SparkContext can be created in executors. Since Spark 3.1, an exception will be thrown when creating SparkContext in executors. You can allow it by setting the configuration spark.executor.allowSparkContext when creating SparkContext in executors.
Я правильно понимаю, что кто - то создаёт spark context на экзекьютерах в рамках текущей сессии? А кто - нибудь знает кейс когда это может потребоваться...интересно очень