Я опробую Glue в качестве замены нашего ETL-конвейера и противостою некоторым потенциальным препятствиям в миграции благодаря скорости, производительности и интерактивности процесса REPL при разработке преобразований.
Среда:
- Подтверждение концепции для одного CSV-файла, распакованного и сохраненного в контейнере s3.
- Сжатый этот файл составляет 458 МБ.Несжатый этот файл составляет 3,4 ГБ.Я тестирую преобразования, используя рекомендованный подход ноутбука Zeppelin, работающего на конечной точке разработчика Glue
Наблюдения:
Создание простой карты в новом столбце и подсчет строк по этомунабор данных занимает больше времени, чем я ожидал:
%pyspark
def normalize_fields(dynamicRecord):
# medium
if dynamicRecord['app_id'] is None:
dynamicRecord['medium'] = 2
elif dynamicRecord['app_id'].lower() == 'unknown' or dynamicRecord['app_id'].lower() == '_unknown':
dynamicRecord['medium'] = 0
elif dynamicRecord['app_id'] is not None:
dynamicRecord['medium'] = 1
else:
dynamicRecord['medium'] = 0
calculated1 = Map.apply(frame=impressions_datasource0,
f=normalize_fields, transformation_ctx="calculate1")
calculated1.count()
4248637L строк
(заняло 21 мин 41 сек. Последнее обновление выполнено анонимно в 11 февраля 2019 г., 10:49:46 утра.)
Вопрос:
Это складывается как то, что мы ожидаем от производительности во время работы в REPL Zeppelin?Если нет, какие-либо рекомендации по улучшению этой производительности?