Стандартный способ, как я думаю, будет использовать Livy, как вы упоминаете.Поскольку это REST API, вы не ожидаете получить ответ JSON, содержащий полный результат (в конце концов, это могут быть гигабайты данных).
Скорее, вы будете использовать нумерацию страниц с ?from=500
и использовать несколькопросит получить количество нужных вам строк.В любом случае, веб-приложению нужно будет отображать или визуализировать только небольшую часть данных одновременно.
Но из того, что вы упомянули в своем комментарии к Рафаэлю Роту, вы не хотели вызывать этот API напрямую извеб-приложение (по уважительной причине).Таким образом, у вас будет API-уровень, который вызывается веб-приложением и затем вызывает Spark.Но в этом случае вы все равно можете использовать Livy + нумерацию страниц для достижения того, что вы хотите, если только вам не нужен полностью доступный результат.Если вам нужны полные результаты, сгенерированные на бэкэнде, вы можете сконструировать запросы Spark, чтобы они материализовали результат (в идеале, в облачное хранилище), и тогда все, что вам нужно, - это иметь доступ к уровню API, где Spark записывает результаты.