У меня есть искробезопасный источник данных размером 500 тыс., Который живет в паркетном файле. Я использую искру 2.0.0 и пакет SparkR внутри Spark (RStudio и R 3.3.1), все запущенные на локальном компьютере с 4 ядрами и 8 гб ОЗУ.Зачем собирать в SparkR так медленно?
Чтобы облегчить построение набора данных, в котором я могу работать в R, я использую метод collect(), чтобы принести искру DataFrame в R. Выполнение занимает около 3 минут, что намного дольше, чем можно было бы прочитать файл CSV с эквивалентным размером, используя пакет data.table.
Понятно, что файл паркета сжимается, и время, необходимое для декомпрессии, может быть частью проблемы, но я нашел другие комментарии в Интернете о том, что метод сбора особенно медленный, и немного в порядке объяснения.
Я пробовал ту же операцию в sparklyr, и это намного быстрее. К сожалению, у sparklyr нет возможности делать путь даты внутри объединений и фильтров так же легко, как SparkR, и поэтому я застрял, используя SparkR. Кроме того, я не считаю, что могу одновременно использовать оба пакета (т. Е. Запускать запросы с использованием вызовов SparkR, а затем обращаться к этим искровым объектам с помощью sparklyr).
Есть ли у кого-то подобный опыт, объяснение относительной медленности метода collect() SparkR и/или любых решений?
Пример строки 500K является лишь одним примером и рисуется из таблиц с 300M строк. Spark требуется для выполнения этой работы в моей настройке, но медленность перемещения данных между Spark и R является серьезным замедлением. –