使用常规 Jupyter Notebook 导入 PySpark 包
Posted
技术标签:
【中文标题】使用常规 Jupyter Notebook 导入 PySpark 包【英文标题】:Import PySpark packages with a regular Jupyter Notebook 【发布时间】:2016-02-28 16:07:47 【问题描述】:除了正确导入包之外,pyspark
实际上在做什么?是否可以使用常规的jupyter notebook
然后导入所需的内容?
【问题讨论】:
没有反对pyspark
,只是想了解 Spark (PySpark) 的工作原理。
【参考方案1】:
是的,这是可能的,但可能会很痛苦。虽然单独使用 Python 不是问题,您只需要设置 $SPARK_HOME
,添加 $SPARK_HOME/python
(如果无法访问,否则 $SPARK_HOME/python/lib/py4j-[VERSION]-src.zip
)PySpark 脚本也可以处理 JVM 设置(--packages
、--jars
--conf
等)。
这可以使用PYSPARK_SUBMIT_ARGS
变量或$SPARK_HOME/conf
来处理(参见例如How to load jar dependenices in IPython Notebook)。
有一个旧的blog post from Cloudera 描述了示例配置,据我所知,它仍然有效。
【讨论】:
如果我想发送我自己的py
库,它有几个类等,怎么样?
@AlbertoBonsanto 像往常一样。如果可能,安装在工作人员上或使用 PyFiles 发送。您对此有什么问题吗?
文档很模糊,我试图在Python
和Scala
都没有任何积极的结果,我必须再试一次。【参考方案2】:
您可以考虑为 Jupyter 创建一个 pySpark 内核 - 它会为您导入 pyspark 包。
创建文件(需要先创建目录;对于旧版本,它可能位于其他位置):
~/.local/share/jupyter/kernels/pyspark/kernel.json
内容如下:
"display_name": "pySpark (Spark 1.6.0)",
"language": "python",
"argv": [
"/usr/bin/python2",
"-m",
"IPython.kernel",
"-f",
"connection_file"
],
"env":
"SPARK_HOME": "/usr/local/lib/spark-1.6.0-bin-hadoop2.6",
"PYTHONPATH": "/usr/local/lib/spark-1.6.0-bin-hadoop2.6/python/:/usr/local/lib/spark-1.6.0-bin-hadoop2.6/python/lib/py4j-0.9-src.zip",
"PYTHONSTARTUP": "/usr/local/lib/spark-1.6.0-bin-hadoop2.6/python/pyspark/shell.py",
"PYSPARK_SUBMIT_ARGS": "pyspark-shell"
适当更改 Spark 的路径。
【讨论】:
【参考方案3】:假设您尚未创建上下文,我喜欢使用PYSPARK_SUBMIT_ARGS
设置提交参数:
import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--driver-memory 15g --packages com.databricks:spark-csv_2.10:1.3.0 pyspark-shell'
【讨论】:
以上是关于使用常规 Jupyter Notebook 导入 PySpark 包的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 3 从另一个目录中的模块导入本地函数,并在 Jupyter Notebook 中进行相对导入