ETL 1,5 ГБ Dataframe в pyspark на AWS EMR - PullRequest
0 голосов
/ 26 мая 2020

Я использую кластер EMR с 1 главным (m5.2x большой) и 4-мя основными узлами (c5.2xlarge) и запускаю на нем задание PySpark, которое объединит 5 таблиц фактов, 150 столбцов и 100 тыс. Строк каждая и 5 маленьких таблицы измерений 10 столбцов, в каждой из которых менее 100 записей. Когда я присоединяюсь ко всем этим таблицам, результирующий фрейм данных будет иметь 600 столбцов и 420 тыс. Записей (примерно 1,5 ГБ данных).

Пожалуйста, предложите мне что-нибудь здесь, я из фона SQL и DWH. Следовательно, я использовал один запрос SQL, чтобы объединить все 5 фактов и 5 измерений, поскольку мне нужно вывести из него 600 столбцов, и я чувствую, что один правильно отформатированный запрос будет легко поддерживать в будущем. Еще одна тема в моей голове - это предложение использовать основные искровые соединения (например: df = a.join (b, a ['id'] = b ['id'], how = 'inner')) ..

Какой из способов присоединиться к этим столам был бы лучшим / внушаемым? В настоящее время в моем огромном SQL запросе я транслирую небольшие размеры, и это в определенной степени помогло.

...