如何安装pyspark以便在独立脚本中使用?
我正在尝试用Python来使用Spark。我从下载页面安装了Spark 1.0.2,适用于Hadoop 2的二进制版本。我可以在Python的交互模式下运行快速入门示例,但现在我想写一个独立的Python脚本来使用Spark。快速入门文档说只需要导入pyspark
,但这不管用,因为它不在我的PYTHONPATH里。
我可以运行bin/pyspark
,并看到这个模块安装在SPARK_DIR/python/pyspark
下面。我可以手动把它添加到我的PYTHONPATH环境变量里,但我想知道有没有更好的自动化方法。
有什么好的方法可以为独立脚本添加pyspark
支持吗?我在Spark安装目录下没有看到setup.py
。我该如何为一个依赖于Spark的Python脚本创建一个pip包呢?
5 个回答
不要在前面加上美元符号,直接使用 export SPARK_HOME
就可以了。
从Spark 2.2开始,PySpark现在可以在PyPI上获取了。感谢@Evan_Zamir。
pip install pyspark
在Spark 2.1时,你只需要下载Spark并运行setup.py文件:
cd my-spark-2.1-directory/python/
python setup.py install # or pip install -e .
另外,还有一个问题单在讨论将其添加到PyPI的事宜。
我按照一个指南,在独立环境中安装了pyspark。具体步骤如下:
export SPARK_HOME="/opt/spark"
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
接下来,你需要安装py4j:
pip install py4j
试试看:
./bin/spark-submit --master local[8] <python_file.py>
从Spark-2.2.0开始,可以用 pip install pyspark
在你的电脑上安装pyspark。
如果你使用的是旧版本,请按照以下步骤操作。需要在bashrc文件中添加Pyspark库到Python的路径中。
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
另外,别忘了设置SPARK_HOME环境变量。PySpark依赖于py4j这个Python包,所以你需要按照以下方式安装它。
pip install py4j
想了解更多关于独立的PySpark应用程序的信息,可以参考这篇 文章
你可以像你说的那样手动设置PYTHONPATH,这在你本地运行一些独立的非交互式脚本时可能会有用。
不过,(py)spark的核心就是把你的任务分发到集群中的各个节点上。每个集群都有一个配置,里面定义了一个管理器和很多参数;关于如何设置这些的详细信息可以在这里找到,其中包括一个简单的本地集群(这对于测试功能可能会有帮助)。
在实际使用中,你会通过spark-submit来提交任务,这样会把你的代码分发到集群的各个节点上,并为它们在这些节点上运行建立上下文。不过,你需要确保这些节点上的Python安装有所有必需的依赖(这是推荐的方式),或者把依赖和你的代码一起传过去(我不太清楚这个是怎么操作的)。