Автозаполнение Jupyter + PySpark

Извините за вопрос новичка Jupyter -

Я установил Jupyter и PySpark, используя это руководство - https://blog.sicara.com/get-started-pyspark-jupyter-guide-tutorial-ae2fe84f594f

Кажется, все работает, но у меня нет автозаполнения для некоторых «вложенных» функций.

Например - запуск "spark" -> я получаю сеанс spark

Когда я нажимаю вкладку после «искры». -> Я получаю список возможных предложений, таких как "читать"

Но нажатие tab после spark.read. ничего не показывай. Хотя я бы ожидал показать такие параметры, как «CSV», «Паркват» и т.д....

Важное примечание: запуск "spark.read.csv("1.txt")" работает

Также - пытался применить предложения от Автозаполнение вкладки `ipython` не работает с импортированным модулем, но это не сработало.

Что мне не хватает?

Причина может быть более прозаичной; Я предполагаю, что искра довольно тяжелая, поэтому для разбора зависимостей требуется много времени. Если количество возвращенных предложений слишком велико (или это занимает слишком много времени), процесс может быть убит, вы можете проверить это.

Szymon Maszke 10.02.2019 19:43

спасибо за предложение! как я могу это проверить? Кстати, когда я запускаю a= spark.read. и позже запустите a. <tab> Я получил все предложения, на которые рассчитывал

Vitali Melamud 10.02.2019 20:43

Вы можете наблюдать за использованием ресурсов и получить процесс, ответственный за завершение, я предполагаю, что использование ЦП резко возрастет во время синтаксического анализа библиотеки. То, что вы написали выше, может указывать на то, что это действительно так, возможно, кто-то еще сможет точно определить проблему.

Szymon Maszke 10.02.2019 21:58
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
3
1 829
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я разработал расширение Jupyter Notebook Extension на основе TabNine, которое обеспечивает автодополнение кода на основе глубокого обучения. Конечно, он также поддерживает Pyspark. Вот ссылка на Github моей работы: юпитер-табнин.

Он уже доступен на pypi-индекс. Просто введите следующие команды, а затем наслаждайтесь :)

pip3 install jupyter-tabnine
jupyter nbextension install --py jupyter_tabnine
jupyter nbextension enable --py jupyter_tabnine
jupyter serverextension enable --py jupyter_tabnine

demo

Это можно сделать, вручную импортировав или установив переменную .env для python.

  1. В сеансе Python/блокноте.
import rlcompleter, readline
readline.parse_and_bind("tab: complete")
  1. Включить его при запуске PySpark — мой случай.

.bash_profile

export PYTHONSTARTUP = "$HOME/.pythonrc"

.pythonrc

import rlcompleter, readline
readline.parse_and_bind("tab: complete")

Другие вопросы по теме