Проблема с производительностью при преобразовании фрейма данных pyspark в JSON - PullRequest
1 голос
/ 18 июня 2019

Я хотел бы эффективно вставить содержимое фрейма pyspark в Redis. Попытка нескольких методов, но ни один из них не дает ожидаемых результатов.

  1. Преобразование df в json занимает 30 секунд. Цель состоит в том, чтобы установить полезную нагрузку json в кластер Redis для потребления.

  2. Я также пытаюсь использовать библиотеку spark-redis https://github.com/RedisLabs/spark-redis/blob/master/doc/python.md для вставки результатов в Redis, чтобы результаты вставлялись в Redis всеми рабочими узлами, чтобы увидеть, огромная разница. Даже этот процесс занимает столько же времени, чтобы вставить результаты в Redis

Я ищу экспертные предложения о том, как устранить узкое место и посмотреть, смогу ли я поднять его менее чем за 5 секунд, спасибо.

Я использую кластер EMR с 1 + 4 узлами с 16 ядрами и 64 гигабайтами памяти каждый.

js = json.dumps(df.toJSON().collect()) #takes 29 seconds
redis.set(key1, js) #takes 1 second

df.write.format("org.apache.spark.sql.redis").option("table", key1).mode('append').save()   #takes 28 seconds

первые две строки кода для преобразования df в json занимают 29 секунд, а настройка в redis занимает 1 секунду.

или

последняя строка кода использует рабочие узлы для вставки содержимого df непосредственно в Redis, но занимает около 28 секунд.

...