$ bin/spark-submit first.py
-----------first.py-------------------------------
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf = conf)
lines = sc.textFile("first.py")
pythonLines = lines.filter(lambda line: "Python" in line)
print "hello python"
print pythonLines.first()
print pythonLines.first()
print "hello spark!"
---------------------------------------------------
hello python
pythonLines = lines.filter(lambda line: "Python" in line)
pythonLines = lines.filter(lambda line: "Python" in line)
hello spark!
到spark的安装目录下/bin 下面 spark-submit ***.py 即可
spark 集群运行python作业
首先记录一下spark的四种运行模式
- local:本地单进程模式,用于本地开发测试Spark代码
- standalone:分布式集群模式,Master-Worker架构,Master负责调度,Worker负责具体Task的执行
- on yarn/mesos:运行在yarn/mesos等资源管理框架之上,yarn/mesos提供资源管理,spark提供计算调度,并可与其他计算框架(如MapReduce/MPI/Storm)共同运行在同一个集群之上 (使用cloudera搭建的集群就是这种情况)
- on cloud(EC2):运行在AWS的EC2之上。
下面用python的一个简单作业SimpleApp.py为例,记录下脚本的运行过程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
关于这里的问题主要涉及到连接集群的配置问题,也就是上述代码的conf部分,首先要连接集群的master节点,注意这里的配置写法
spark://192.168.2.241:7077
前缀spark不可少,否则会报“could not parse master URL”的错误即无法解析URL的错误,至于端口号可以在/etc/spark/conf中查询$SPARK_MASTER_PORT这个环境变量,(具体安装方式配置文件位置也不同,根据具体情况来确定)
还有
logFile=”hdfs://hadoop241:8020/user/root/testfile”
我观察到这里默认是从hdfs文件系统上读取文件的,所以首先要把待处理文件put到hdfs上,同样注意路径的写法,这里写的是hdfs上得绝对路径,也可以写相对路径
这里的testfile里只有两句话,用来测试作业能否正确执行
- 1
- 2
- 1
- 2
之后执行
$ pyspark SimpleApp.py