pySpark - избегать обработки одной строки за раз - PullRequest
0 голосов
/ 20 октября 2018

Я использую специальную функцию, которая получает вектор NumPy ndarray и дает еще один ndarray той же длины, что и результаты.

Используя Spark map , я могу запустить эту функцию в каждой строке моих входных данных, что неэффективно, поскольку функция обрабатывает векторы одного элемента каждый раз.

Возможно ли обрабатывать большие объемы данных в Spark?Имея, например, (большую) часть входных данных на одном компьютере, а другую часть данных на другом компьютере, я мог бы передать все строки, доступные на каждом компьютере, одновременно для своей функции как ndarray для эффективного вычисления?

1 Ответ

0 голосов
/ 21 октября 2018

Не ясно, какие виды расчетов вам необходимо выполнить.

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

Примечание. Однако если вы сравниваете Spark с Numpy, вы будете использовать операции DataFrame в SparkSQL, и все данные будут прозрачно перетасовываться между серверами.

Если у вас есть два DataFrames, вы, вероятно, присоединитесь к ним перед выполнением каких-либо операций.

За кулисами нет способа избежать просмотра каждого элемента, собираете ли вы, преобразовываете или иным образом собираете обратно в локальную коллекцию.

...