pyspark学习(一)-- 入门程序word count

1. 学习spark的第一个程序 wordcount

先说下本人的开发环境和工具:

  • win10
  • spark 1.6
  • python 2.7
  • pycharm

什么是word count?单词计数

为什么第一个程序是它,helloword呢?基本上是学习hadoop的mapreduce或spark入门的第一个程序,地位类似于学习写代码时的hello world。

言归正传


代码

from pyspark import SparkConf, SparkContext

# 创建SparkConf和SparkContext
conf = SparkConf().setMaster("local").setAppName("lichao-wordcount")
sc = SparkContext(conf=conf)

# 输入的数据
data=["hello","world","hello","word","count","count","hello"]

# 将Collection的data转化为spark中的rdd并进行操作
rdd=sc.parallelize(data)
resultRdd = rdd.map(lambda word: (word,1)).reduceByKey(lambda a,b:a+b)

# rdd转为collecton并打印
resultColl = resultRdd.collect()
for line in resultColl:
    print line

# 结束
sc.stop()
结果

pyspark学习(一)-- 入门程序word count_第1张图片

基本思路就是先将输入的集合转换成RDD;然后先对RDD进行map操作,将word变换成(word,1)的形式,其中的数字1代表单词出现了1次;之后进行reduceByKey(func),就是将key值相同的数据进行func操作,此处就是将相同单词的次数相加;最后将得到的结果打印在控制台。


2. spark程序初始化

每个spark 应用(application)包含一个驱动(driver)程序,这个驱动程序运行用户的主函数,并在集群中执行并行化操作。Spark提供的主要抽象是一个弹性分布式数据集(resilientdistributed dataset,RDD),它是集群节点中进行分区的元素集合,可以进行并行操作。RDDs是通过从Hadoop文件系统(或其他文件系统)中的文件或程序中scala的集合初始化创建,也可以通过其他RDD转换(transform)得到。用户也可以令spark将RDD持久化(persist)在内存中,这可以使RDD在并行操作中的高效的重用。RDD可以从故障节点中自动恢复。

和上面例子的代码一样,Spark 程序的第一件事是创建一个SparkContext对象,这个对象告诉spark如何连接到集群。为了创建这个对象,首先需要创建一个包含application信息的 SparkConf 对象。

conf = SparkConf().setAppName(appName).setMaster(master)  
sc = SparkContext(conf=conf)  






你可能感兴趣的:(Spark学习)