Предсказать размер кластера Spark (PySpark) Apache - PullRequest
2 голосов
/ 08 февраля 2020

Я хочу выполнить следующую задачу на Apache Spark (PySpark) - у меня есть ~ 15 ТБ данных внутри отдельной таблицы базы данных PostgreSQL, скажем, products. Эта таблица имеет ~ 100 столбцов.

Кроме того, у меня есть ~ 20000 простых различных простых Python функций, которые принимают различный набор параметров на основе значений из строк из таблицы products и возвращают логический результат, просто true или false.

Например, Python func1 может принимать значения от products.column1, products.column23 и products.column45, func2 может принимать значения от products.column1 , products.column3, products.column8, products.column14, products.column71 и т. Д.

Цель состоит в том, чтобы сгруппировать все функции Python по одинаковым входным параметрам и затем оценить каждую из функций внутри каждая группа параметров с данными из каждой строки таблицы products. Затем я хотел бы сгруппировать функции внутри каждой группы параметров по аналогичным возвращенным результатам для всех предоставленных значений параметров. Таким образом, я хотел бы получать группы похожих функций, которые были написаны по-разному, выполняя абсолютно одинаковую работу.

Сейчас я боюсь количества вводимых данных, которые я хотел бы обработать, и даже больше потому что похоже, что входные данные будут умножены - по крайней мере, products * number of Python functions.

Как я упоминал ранее, данные products, хранящиеся сейчас в PostgreSQL, что не очень хорошо для такое количество данных. Итак, прежде всего я хотел бы переместить эти данные в AWS S3 в формате Apache Parquet.

Кроме того, для реализации описанного выше алгоритма я собираюсь использовать Apache Spark, особенно PySpark из-за упомянутых Python функций. Я хотел бы запустить приложение Apache Spark в кластере AWS EMR. Python функции, которые я хотел бы зарегистрировать, например, как UDF, или попытаться выполнить (оценить) их как простые Python функции в Apache Spark-задачи на рабочих узлах (например, я могу сформировать Spark DataFrame с параметрами и дополнительными столбец function_body, который будет содержать Python код функции, которую необходимо выполнить с этими параметрами)

Прежде всего, у меня есть общий вопрос - будет ли этот подход работать вообще?

Если да, то не могли бы вы помочь приблизительно спрогнозировать кластер Spark AWS EMR Apache, чтобы выполнить эту задачу за разумное количество времени на указанном количестве входных данных. Заранее спасибо!

...