我正在尝试使用Spark和Python。我从downloads页面安装了Spark 1.0.2 for Hadoop 2二进制分发版。我可以在Python交互模式中运行快速入门示例,但现在我想编写一个使用Spark的独立Python脚本。 quick start documentation表示只导入pyspark
,但这不起作用,因为它不在我的PYTHONPATH上。
我可以运行bin/pyspark
并看到该模块安装在SPARK_DIR/python/pyspark
下方。我可以手动将其添加到我的PYTHONPATH环境变量中,但我想知道首选的自动方法。
为独立脚本添加pyspark
支持的最佳方法是什么?我在Spark安装目录下的任何地方都看不到setup.py
。我如何为依赖于Spark的Python脚本创建一个pip包?
答案 0 :(得分:35)
pip install pyspark
在您的计算机上安装pyspark。对于旧版本,请参阅以下步骤。在bashrc中的Python路径中添加Pyspark lib
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
也不要忘记设置SPARK_HOME。 PySpark依赖于py4j Python包。所以安装如下
pip install py4j
有关独立PySpark应用程序的更多详细信息,请参阅此post
答案 1 :(得分:15)
我安装了pyspark,以便在guide后独立使用。步骤是:
export SPARK_HOME="/opt/spark"
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
然后你需要安装py4j:
pip install py4j
试一试:
./bin/spark-submit --master local[8] <python_file.py>
答案 2 :(得分:11)
从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 .
还有一个ticket用于将其添加到PyPI。
答案 3 :(得分:8)
您可以按照建议手动设置PYTHONPATH,在本地安装上测试独立的非交互式脚本时,这可能对您有用。
但是,(py)spark就是将作业分配到集群上的节点。每个集群都有一个定义管理器和许多参数的配置;设置此项的详细信息为here,并包含一个简单的本地群集(这可能对测试功能很有用)。
在生产中,您将通过spark-submit提交任务以激活spark,它将您的代码分发到群集节点,并为它们在这些节点上运行建立上下文。但是,您需要确保节点上的python安装具有所有必需的依赖项(推荐的方式),或者依赖项与代码一起传递(我不知道它是如何工作的)。
答案 4 :(得分:0)
不要export $SPARK_HOME
,请export SPARK_HOME
。