Jupyter + PySpark 自动完成

Posted

技术标签:

【中文标题】Jupyter + PySpark 自动完成【英文标题】:Jupyter + PySpark autocomplete 【发布时间】:2019-01-23 21:00:55 【问题描述】:

抱歉新手 Jupyter 问题 -

我已经使用本手册安装了 Jupyter 和 PySpark - https://blog.sicara.com/get-started-pyspark-jupyter-guide-tutorial-ae2fe84f594f

似乎一切正常,但我没有自动完成某些“嵌套”功能

例如 - 运行“spark” -> 我得到 spark 会话

当我在“spark”之后按 Tab 键时。 -> 我得到了可能的建议列表,例如“阅读”

但在 spark.read 之后按 Tab。不显示任何东西。虽然我希望显示诸如“csv”、“parquat”等选项......

重要提示 - 运行 "spark.read.csv("1.txt")" 有效

另外 - 尝试应用来自 `ipython` tab autocomplete does not work on imported module 的建议,但没有成功

我错过了什么?

【问题讨论】:

原因可能比较平淡;我想 spark 很重,因此解析依赖项需要很多时间。如果返回的建议数量太大(或花费太多时间),该进程可能会被终止,您可能需要检查一下。 感谢您的建议!我怎样才能检查这个?顺便说一句 - 当我运行 a=spark.read 时。然后运行一个。 我得到了我希望得到的所有建议 您可以观察资源使用情况并让进程负责完成,我假设在解析库期间 CPU 使用率会飙升。您在上面写的内容可能表明情况确实如此,也许其他人将能够进一步指出问题。 【参考方案1】:

我开发了一个基于 TabNine 的 Jupyter Notebook Extension,它提供了基于深度学习的代码自动完成功能。当然它也支持Pyspark。这是我工作的 Github 链接:jupyter-tabnine。

现在在pypi index 上可用。只需发出以下命令,然后享受它:)

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

【讨论】:

【参考方案2】:

这可以通过手动导入或设置 python 的 .env 变量来完成。

    在 python 会话/笔记本中。
import rlcompleter, readline
readline.parse_and_bind("tab: complete")
    在 PySpark 启动时启用它 - 我的情况。

.bash_profile

export PYTHONSTARTUP="$HOME/.pythonrc"

.pythonrc

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

【讨论】:

以上是关于Jupyter + PySpark 自动完成的主要内容,如果未能解决你的问题,请参考以下文章

anaconda3 jupyter添加自动补全功能

为什么Jupyter Notebook中没有突出显示错误和自动完成功能?

没有标签的 JupyterLab 自动完成

Python 数据类型到 pyspark.sql.types 的自动转换

python / pyspark 版本的 Jupyter 问题

Pyspark / pyspark 内核在 jupyter notebook 中不起作用