Я пытаюсь кэшировать таблицу Hive в памяти с помощью CACHE TABLE tablename;Apache Spark SQL - RDD In-Memory Data Skew
После этой команды таблица успешно кэшируется, однако я заметил перекос в том, как RDD разбивается на разделы в памяти.
Вот что я вижу в закладке «Storage» на мастер приложения
rdd_71_1 Memory Deserialized 1x Replicated 1264.7 MB 0.0 B node4:38759
rdd_71_10 Memory Deserialized 1x Replicated 11.6 MB 0.0 B node1:58115
rdd_71_11 Memory Deserialized 1x Replicated 25.7 MB 0.0 B node1:53968
rdd_71_2 Memory Deserialized 1x Replicated 72.6 MB 0.0 B node4:54133
rdd_71_4 Memory Deserialized 1x Replicated 1260.9 MB 0.0 B node2:33179
rdd_71_5 Memory Deserialized 1x Replicated 56.8 MB 0.0 B node2:54222
rdd_71_7 Memory Deserialized 1x Replicated 54.5 MB 0.0 B node4:34149
rdd_71_8 Memory Deserialized 1x Replicated 1277.8 MB 0.0 B node1:43572
rdd_71_9 Memory Deserialized 1x Replicated 1255.8 MB 0.0 B node1:58518
Уведомление некоторые перегородки диапазона 11Мб до 72MB и других разделов имеют диапазон ~ 1200MB
Даже когда я не кеширую таблицу, а просто обрабатываю с диска, я вижу, что некоторые задачи завершаются МНОГО раньше других, что еще раз подтверждает мои предположения об асимметрии.
Что здесь происходит? Как я могу избежать этого искажения данных?
PS: Таблица хранится в формате ORC
Предполагаю, что таблица кеша выполняет временные кеши для увеличения производительности вычислений – eliasah