Spark Rapids: простой пример HashAggregate

[Привет всем, я новичок в Спарк-Рапидс. Я проходил базовое введение в Spark Rapids, где я получил рисунок (прилагается), объясняющий разницу между планами запросов на основе CPU и GPU для примера hashaggregate. Мне непонятно все, что в планах, кроме последнего этапа конвертации в Row Format. Кто-нибудь может предложить причину этого.]


person Jatin    schedule 12.10.2020    source источник
comment
Изображение не прикреплено. Вы имеете в виду эту ссылку - nvidia.github.io/spark-rapids?   -  person Subash    schedule 12.10.2020


Ответы (1)


Я не вижу указанного рисунка, но подозреваю, что то, что происходит в вашем конкретном запросе, сводится к одному из двух возможных случаев.

Если ваш запрос выполняет какой-то сбор данных обратно в драйвер (например: .show или .collect в Scala или иным образом напрямую отображает результаты запроса), то столбчатые данные графического процессора необходимо преобразовать обратно в строки, прежде чем они будут возвращены драйверу. . В конечном итоге драйвер работает с RDD[InternalRow], поэтому в этих случаях должен происходить переход с RDD[ColumnarBatch].

Если ваш запрос заканчивается записью вывода в файлы (например, в Parquet или ORC), то план часто показывает окончательный GpuColumnarToRow переход. Оптимизатор Catalyst от Spark автоматически вставляет ColumnarToRow переходов, когда видит операции, способные производить столбчатый вывод (например, RDD[ColumnarBatch]), а затем плагин обновляет эти переходы до GpuColumnarToRow, когда предыдущий узел будет работать с графическим процессором. Однако в этом случае узел запроса - это команда записи данных, и они не производят вывода в смысле плана запроса. Вывод напрямую записывается в файлы, когда узел выполняется, вместо того, чтобы отправлять вывод нижестоящему узлу для дальнейшей обработки. Следовательно, на практике это вырожденный переход, поскольку команда записи данных не отправляет данные при переходе от столбца к строке. Я подал жалобу на ускоритель RAPIDS, чтобы очистить этот вырожденный переход, но это не влияет на производительность запроса.

person Jason Lowe    schedule 12.10.2020
comment
У меня есть еще одна вещь, о которой я хочу попросить вас, пожалуйста, не могли бы вы помочь. Я хочу понять концепцию GPU Direct Storage. Можете ли вы предложить для этого какой-нибудь хороший блог или пост? - person Jatin; 15.10.2020
comment
Чтобы узнать больше о GPU Direct Storage, см. developer.nvidia.com/gpudirect. Внизу страницы находятся ссылки на сообщения в блогах, веб-семинары и многое другое. - person Jason Lowe; 16.10.2020