Это будет работать на скорость 3, вы также можете настроить цвет границы:
Это тот тип поста, где QUESTION будет стоить больше, чем ОТВЕТ, потому что приведенный выше код работает, но его нет нигде в документации или примерах Spark 2.x.
Выше показано, как я программно добавил функциональность в Spark 2.x посредством координат Maven. У меня было это работает, но потом оно перестало работать. Почему?
Когда я запустил вышеупомянутый код в jupyter notebook
, ноутбук - за кулисами - уже выполнил этот идентичный фрагмент кода посредством моего сценария PYTHONSTARTUP
. Этот сценарий PYTHONSTARTUP
имеет тот же код, что и выше, , но опускает maven координаты (намеренно).
Итак, вот как возникает эта тонкая проблема:
spark_sesn = SparkSession.builder.config(conf = spark_conf).getOrCreate()
Поскольку Spark Session уже существовал, вышеприведенный оператор просто повторно использовал этот существующий сеанс (.getOrCreate ()) , в котором не было загруженных jar / библиотек (опять же, потому что мой скрипт PYTHONSTARTUP преднамеренно пропускает их). Вот почему это хорошая идея - помещать операторы печати в сценарии PYTHONSTARTUP (которые в остальном молчат).
В конце концов, я просто забыл сделать это: $ unset PYTHONSTARTUP
перед запуском демона JupyterLab / Notebook
.
Я надеюсь, что Вопрос поможет другим, потому что именно так программно добавляются функциональные возможности в Spark 2.x (в данном случае Kafka). Обратите внимание, что вам понадобится подключение к Интернету для единовременной загрузки указанных jar-файлов и рекурсивных зависимостей из Maven Central.