2017-01-19 2 views
2

Существует график, который вычисляет на Spark и сохраняет в Cassandra.
Также существует REST API, который имеет конечную точку для получения узла графа с ребрами и краями ребер.
Этот граф второй степени может включать до 70000 узлов.
В настоящее время использует Cassandra как базу данных, но для извлечения большого количества данных ключом из Cassandra требуется много времени и ресурсов.
Мы попробовали TitanDB, Neo4j и OriendDB для повышения производительности, но Cassandra показал наилучшие результаты.
Используйте искру RDD как источник данных в REST API

Теперь есть еще одна идея. Persist RDD (или может быть объект GrapgX) в службе API и в API-интерфейсе API-запроса необходимы данные из сохраненного RDD.
Я предполагаю, что он будет работать быстро, в то время как RDD вписывается в память, но в случае, если он кэшируется на диск, он будет работать как полное сканирование (например, полный файл паркета сканирования). Также я ожидаю, что мы столкнемся с этими проблемами:

  • утечка памяти в искры;
  • обновление этого RDD (непервизор предыдущий, новый и новый) потребует остановки API;
  • Параллельное использование этого RDD потребует ручного управления ресурсами процессора.

У кого-нибудь есть такой опыт?

ответ

0

Spark НЕ является двигателем хранения. Если вы не будете обрабатывать большое количество данных каждый раз, вы должны рассмотреть следующие вопросы: