spark实现wordCount(scala、python)

本文环境spark1.6 scala 2.1.6, python 2.7
Spark是大家非常熟悉的大数据处理框架,虽然在公司已经使用了很久,但是没有深入的了解过Spark的底层代码原理,大家都清楚,Spark是由scala开发实现的,为了深入了解Spark,学习scala是必不可少的,在这里简单的写一下三种语言调用Spark接口的方式,实现wordCount功能。

Scala实现

scala实现调用spark真的是十分的简洁,几行代码就完成了统计功能
package ScalaWordCount

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}


object SparkWordCountScala {
  def main(args: Array[String]): Unit = {
    
    /**
    * conf的作用:
     * 1. 设置spark的运行模式
     * 2. 设置spark在web ui中显示的名称
     * 3. 设置当前spark application运行资源
     */
    val conf = new SparkConf

    conf.setMaster("local").setAppName("ScalaWordCount")
    
    /**
     * 通往集群的唯一通道 
     */
    val sc = new SparkContext(conf)

    /**
     * spark读取文档或者HDFS中的数据,但是没有直接读取的接口,都是调用MR读取内容,生成RDD
     */
    val lines: RDD[String] = sc.textFile("words")

    /**
     * 利用RDD的算子对数据进行切分统计排序
     */
    val words: RDD[String] = lines.flatMap(_.split(" "))

    val pairWords: RDD[(String, Int)] = words.map(new Tuple2(_, 1))

    val reduce: RDD[(String, Int)] = pairWords.reduceByKey((v1:Int, v2:Int)=>{v1+v2})

    val result = reduce.sortBy(tuple=>{tuple._2}, false)

    result.foreach(tuple=>{
      println(tuple)
    })

  }
}

python实现

#coding:utf-8
from pyspark import SparkContext
from pyspark.conf import SparkConf

def show_result(couple):
	print(couple)

if __name__=='__main__':
    conf = SparkConf()
    conf.setMaster("local")
    conf.setAppName("test")

	sc = SparkContext(conf=conf)
	textFile = sc.textFile("./word")

	word_count = textFile.flatMap(lambda line: line.split(" ")).map(lambda word: (word,1)).reduceByKey(lambda a, b : a + b)

	word_count.foreach(lambda word: show_result(word))

你可能感兴趣的:(大数据,spark)