07 Spark RDD编程 综合实例 英文词频统计
Posted 庞心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07 Spark RDD编程 综合实例 英文词频统计相关的知识,希望对你有一定的参考价值。
1.
用Pyspark自主实现词频统计过程。
>>> s = txt.lower().split()
>>> dd = {}
>>> for word in s:
... if word not in dd:
... dd[word] = 1
... else:
... dd[word] = dic[word] + 1
...
>>> ss = sorted(dd.items(),key=operator.itemgetter(1),reverse=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name \'operator\' is not defined
>>> import operator
>>> ss = sorted(dditems(),key=operator.itemgetter(1),reverse=True)
>>> print(ss)
[(\'the\', 136), (\'and\', 111), (\'of\', 82), (\'to\', 71), (\'our\', 68), (\'we\', 59), (\'that\', 49), (\'a\', 46), (\'is\', 36), (\'in\', 26), (\'this\', 24), (\'for\', 23), (\'are\', 22), (\'but\', 20), (\'--\', 17), (\'they\', 17), (\'on\', 17), (\'it\', 17), (\'will\', 17), (\'not\', 16), (\'have\', 15), (\'us\', 14), (\'has\', 14), (\'can\', 13), (\'with\', 13), (\'who\', 13), (\'be\', 12), (\'as\', 11), (\'or\', 11), (\'(applause.)\', 11), (\'those\', 11), (\'nation\', 10), (\'you\', 10), (\'their\', 10), (\'new\', 9), (\'these\', 9), (\'us,\', 9), (\'so\', 8), (\'by\', 8), (\'than\', 8), (\'must\', 8), (\'because\', 8), (\'what\', 8), (\'every\', 8), (\'all\', 8), (\'its\', 8), (\'been\', 7), (\'at\', 7), (\'when\', 7), (\'no\', 6), (\'less\', 6), (\'cannot\', 6), (\'let\', 6), (\'too\', 6), (\'common\', 6), (\'was\', 5), (\'time\', 5), (\'people\', 5), (\'only\', 5), (\'know\', 5), (\'nor\', 5), (\'now\', 5), (\'from\', 5), (\'seek\', 4), (\'work\', 4), (\'greater\', 4), (\'whether\', 4), (\'america\', 4), (\'more\', 4), (\'before\', 4), (\'power\', 4), (\'which\', 4), (\'long\', 4), (\'through\', 4), (\'men\', 4), (\'meet\', 4), (\'women\', 4), (\'journey\', 3), (\'up\', 3), (\'between\', 3), (\'were\', 3), (\'say\', 3), (\'where\', 3), (\'an\', 3), (\'god\', 3), (\'may\', 3), (\'last\', 3), (\'economy\', 3), (\'hard\', 3), (\'do\', 3), (\'today\', 3), (\'there\', 3), (\'founding\', 3), (\'hope\', 3), (\'crisis\', 3), (\'words\', 3), (\'carried\', 3), (\'them\', 3), (\'future\', 3), (\'come\', 3), (\'shall\', 3), (\'most\', 3), (\'generation\', 3), (\'day,\', 3), (\'you.\', 3), (\'things\', 3), (\'upon\', 3), (\'force\', 3), (\'i\', 3), (\'spirit\', 3), (\'just\', 3), (\'over\', 3), (\'father\', 3), (\'question\', 3), (\'your\', 3), (\'once\', 3), (\'across\', 3), (\'face\', 2), (\'better\', 2), (\'do,\', 2), (\'why\', 2),
2. 并比较不同计算框架下编程的优缺点、适用的场景。
–Python
–MapReduce
–Hive
–Spark
Mapreduce,它最本质的两个过程就是Map和Reduce,Map的应用在于我们需要数据一对一的元素的映射转换,比如说进行截取,进行过滤,或者任何的转换操作,这些一对一的元素转换就称作是Map;Reduce主要就是元素的聚合,就是多个元素对一个元素的聚合,比如求Sum等,这就是Reduce。
Mapreduce是Hadoop1.0的核心,Spark出现慢慢替代Mapreduce。那么为什么Mapreduce还在被使用呢?因为有很多现有的应用还依赖于它,它不是一个独立的存在,已经成为其他生态不可替代的部分,比如pig,hive等。
尽管MapReduce极大的简化了大数据分析,但是随着大数据需求和使用模式的扩大,用户的需求也越来越多:
1. 更复杂的多重处理需求(比如迭代计算, ML, Graph);
2. 低延迟的交互式查询需求(比如ad-hoc query)
而MapReduce计算模型的架构导致上述两类应用先天缓慢,用户迫切需要一种更快的计算模型,来补充MapReduce的先天不足。
Spark的出现就弥补了这些不足,我们来了解一些Spark的优势:
1.每一个作业独立调度,可以把所有的作业做一个图进行调度,各个作业之间相互依赖,在调度过程中一起调度,速度快。
2.所有过程都基于内存,所以通常也将Spark称作是基于内存的迭代式运算框架。
3.spark提供了更丰富的算子,让操作更方便。
4.更容易的API:支持Python,Scala和Java
其实spark里面也可以实现Mapreduce,但是这里它并不是算法,只是提供了map阶段和reduce阶段,但是在两个阶段提供了很多算法。如Map阶段的map, flatMap, filter, keyBy,Reduce阶段的reduceByKey, sortByKey, mean, gourpBy, sort等。
Hive算是大数据数据仓库的事实标准吧。Hive可以方法HDFS和Hbase上的数据,impala、spark sql、Presto完全能读取hive建立的数据仓库了的数据。一般情况在批处理任务中还在使用Hive,而在热查询做数据展示中大量使用impala、spark sql或Presto。
Hive提供三种访问接口:Cli,web Ui,HiveServer2。
以上是关于07 Spark RDD编程 综合实例 英文词频统计的主要内容,如果未能解决你的问题,请参考以下文章