如何运行含spark的python脚本

$ 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为例,记录下脚本的运行过程

from pyspark import SparkContext,SparkConf

conf=SparkConf()
conf.setMaster("spark://192.168.2.241:7077")
conf.setAppName("test application")


logFile="hdfs://hadoop241:8020/user/root/testfile"
sc=SparkContext(conf=conf)
logData=sc.textFile(logFile).cache()


numAs=logData.filter(lambda s: 'a' in s).count()
numBs=logData.filter(lambda s: 'b' in s).count()

print "Lines with a:%i,lines with b:%i" % (numAs,numBs)

   
   
  • 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里只有两句话,用来测试作业能否正确执行

stay hungery,stay foolish
steve jobs
   
   
  • 1
  • 2
  • 1
  • 2

之后执行

$ pyspark SimpleApp.py


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值