Я хотел бы эффективно вставить содержимое фрейма pyspark в Redis. Попытка нескольких методов, но ни один из них не дает ожидаемых результатов.
Преобразование df в json занимает 30 секунд. Цель состоит в том, чтобы установить полезную нагрузку json в кластер Redis для потребления.
Я также пытаюсь использовать библиотеку 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 секунд.