前言
学习spark已经有一段时间了,当时是用python做数据处理,接口封装的还不是那么好,于是使用了pyspark。使用了之后发现有些错误不能有效追踪,于是学习了scala。
这篇文章是简单对比一下两种语言的的spark开发的异同点。
pyspark实现
conf = SparkConf()
sc = SparkContext(conf=conf)
counts = sc.textFile(sys.argv[1]).\
map(lambda x:x.split("\t")).\
map(lambda x:(x[5],1)).\
reduceByKey(lambda x,y:x+y).\
map(lambda x:(x[1],x[0])).sortByKey(False).\
map(lambda x:(x[1],x[0])).take(5)
scala 实现
val sparkConf = new SparkConf().setMaster("local").setAppName("SparkWordCountApp")
val sc = new SparkContext(sparkConf)
val rdd = sc.textFile("")
rdd.flatMap((x)=>x.split(",")).
map((x)=>(x,1)).reduceByKey(_+_).
map(x=>(x._2,x._1)).sortByKey().
map(x=>(x._2,x._1))
.collect().foreach(println)
单纯的以简单程度来说两只语言是差别不大的,写法上也很相似。如果具体说区别的话,就是两种语言map方法里的匿名函数书写不同。