Ваша ошибка указывает, что ваш bundle.js
загружен относительно текущего URL-адреса. Добавьте /
в начало src
, чтобы сделать его абсолютным.
<script src="/bundle.js"></script>
Это действительно не так, как работает Spark.
Код, помещенный в foreachPartition
, выполняется в ином контексте, чем оригинал
List<HashMap> finalJsonMap = new ArrayList<HashMap>();
Все, что вы можете сделать в такой настройке, - это изменить локальную копию.
Это многократно обсуждалось при переполнении стека и подробно описано в официальной документации в разделе «Понимание замыканий» .
Учитывая требуемый результат (то есть локальную коллекцию), на самом деле вы ничего не можете сделать, кроме как преобразовать свой код в mapPartitions
и collect
. Это, однако, вряд ли эффективно или идиоматично в Spark.
Я настоятельно рекомендую переосмыслить ваш текущий дизайн.