下面以一个简单的例子,介绍下如何用python编程,并提交到yarn上执行。

环境准备

SparkContext是spark编程的基石,后面的SqlConext等等都是基于SparkContext。它作为python的lib,在pyspark库中提供,同时它还依赖py4j,所以我们要做的第一件事就是修改系统的python路径,把它俩加进去:

cd /usr/local/lib/python2.7/dist-packages/
echo "/home/ieevee/spark/spark-1.6.1-bin-hadoop2.6/python/"  >> spark.pth
echo "/home/ieevee/spark/spark-1.6.1-bin-hadoop2.6/python/lib/py4j-0.9-src.zip"  >> spark.pth

上面的路径替换为你放spark的实际路径。

不推荐直接在./bin/pyspark来做处理,它比较重,并且掩盖了sc的创建过程。其实作为一个应用,需要的只是pyspark库,官方管这种叫做“self-contained”。

编码

我的例子非常简单,将一个csv文件放到HDFS上,计算下有多少行,打印下第一行(官网的例子)。代码如下(1.py):

from pyspark import SparkContext
if __name__ == "__main__":
    sc = SparkContext(appName="test1")
    textFile = sc.textFile("/test.csv")
    print textFile.count()
    print textFile.first()
    sc.stop()

集群上执行

生产环境上,任务都是在YARN上执行的,所以需要把这个任务submit上去:

{your_spark_home}/bin/spark-submit --master yarn 1.py

在yarn上可以看到这个application的记录。当然需要先配置好YARN需要的配置文件,具体可以参考第二篇文章中SPARK ON YARN部分。