spark与python,sparkscala例子
了解spark-基本概念和示例 _yiihsia[互联网后端技术]
了解spark-基本概念和示例2011/12/05分布式、实时计算、海量数据1,620 Go to commentspark是一个开源的分布式计算系统,提供快速的数据分析。地址http://www.spark-project.org/,官网据说性能比hadoop高很多(个人理解主要是因为两点:内存和缓存),而且相对更简单灵活。非常适合需要反复迭代的计算,比如机器学习。
Spark是基于scala编写的,对我来说也是一门陌生的语言。到目前为止,我还有很多不明白的地方。
基本概念RDD
spark最大的亮点是提出了RDD(Resilient Distributed Dataset)的概念,即一种可扩展的分布式数据集,它是只读的,可恢复的。Spark本身不做物理存储,但是在实际存储中保存了足够的信息来计算RDD。
RDD只能通过四种方式获得:
1.从共享文件系统,比如HDFS2,驱动中的并行scala集合(比如array)会被发送到多个节点。3.从现有的RDD,4。通过改变现有的RDD持久性。Rdd是懒惰的,短暂的。有两个操作可以改变RDD的持久性:缓存:它在第一次计算时保存在内存中,您可以重用保存:它保存到一个分布式文件系统,如hdfs,这个保存的版本将用于将来的操作。
缓存形式只是一个提示。如果集群中没有足够的内存来缓存所有的并行数据集,spark会在使用时重新计算,并选择这种方式工作(性能下降)。如果节点失效或者数据集过大,这种思路就是一种松散的虚拟内存。并行操作
RDD可以执行并行操作reduce:通过相关函数合并数据集以产生结果collect:将所有元素的数据集发送给驱动程序。比如并行更新一个数组foreach的简单方法:通过用户提供的一个函数遍历所有元素,可能只是一个不重要的函数。spark目前不支持mapreduce中的分组reduce,共享变量。
程序员通过函数调用map,filter,reduce。当一个函数被传递给spark操作并在远程集群节点上执行时,该节点的工作使用一个独立的副本。这些变量被复制到所有机器上。一般来说,支持共享变量的跨任务读写是低效的。然而,spark提供了两种有限类型的共享变量:广播变量和蓄电池。
变量广播变量允许程序员在每台机器上保存一个只读变量,而不是发送它和任务的副本。Spark使用高效的广播算法来分配广播变量,以降低通信成本。创建广播变量后,它应该替换集群中任何函数中的值V,并且V不能在节点中多次传输。不能修改广播值V来确保所有节点具有相同的广播值。当用值V创建广播变量B时,V是保存到文件的共享文件系统。b是这个文件路径的序列化形式。当B在worker节点上查询时,spark首先检查V是否缓存在本地,并从文件系统中读取它。Hdfs最初用作广播变量,但是正在开发更有效的流媒体广播系统。蓄电池是唯一的价值:“通过关联操作,它可以有效地支持并行变量。”它们可用于实现计数器(在MapReduce中)或sum。Spark支持原生int。double调用SparkContext.accumulator(v),在集群中初始化值v. Do=operation,但是我们无法读取值。我们只能通过驱动程序读取值。它用于创建一个单独的副本加法器,作为在worker节点上运行任务的每个线程的线程局部变量,从0开始。在每个任务运行后,工人向司机发送信息,包括每个电池的更新。对于每个操作的每个分区,只更新一次驱动程序,以防止重复计算任务因失败而重新执行血统数据集的源信息解释器集成1。类文件被编译并输出到共享文件系统,集群中的工作人员通过java class loader加载它们。2.为了让每一行都可以直接引用singleton对象,我们更改了生成代码的示例,而不是静态方法getInstance。
给出了一些实时统计日志数据的例子,都是局部模式计算(集群模式需要Mesos),仅供参考,实现起来非常简单。
计算日志中出现的hbase读取次数:
日志格式每行的第五位是标识字段,第六位是响应时间,第七位是类型字段。
val spark=new spark context(" local "," test ")val file=spark . textfile(" D:\ \ data \ \ key keys-log \ \ log . log ")val lines=file . filter(line=line . contains(" h base _ time "))println(lines . count());读取hbase的平均响应时间:valspark=newsparkcontext(" local[2]," test ")valfile=spark . textfile(" d:\ \ data \ \ key keys-log \ \ log . log ")val lines=file . filter(_。contains(" h base _ time "))val times=lines . map(DD=DD . split" "(6)。toInt)。reduce(_ _)println(" times:" times/lines . Count())Count h base的请求类型:val Spark=New Spark Context(" local[2]," test ")Valfile=Spark . textfile(" D:\ \ data \ \ key keys-log \ \ log . log ")val lines=file . filter(_。contains(" h base _ time "))val ones=lines . map(word=(word . split(" "(7),1))。reducebykey (_ _)个。foreach (println)参考:使用工作集的http://www.spark-project.org/Spark:集群计算。马泰扎哈利亚,莫沙拉夫乔杜里,迈克尔富兰克林,斯科特申克,扬斯托伊察。USENIX热云22010年6月。
4猜你喜欢:spark举例:统计CSDN不同邮箱的密码白痴指数。Spark示例:SortByKey Spark示例:K-means算法。Spark举例:SortByKey Storm :twitter的实时数据处理工具免Scala,spark,分布式,实时 Java堆内存泄漏。说说Spark的例子:统计CSDN不同邮箱的密码白痴指数做评论。单击此处取消回复。名称(必填)
电子邮件(不公开)(必填)
车站
提交您的评论,请稍候.#
验证码*搜索:标签缓存Cassandra并发Django Dynamo事件Google Hadoop h base HTTP IO iPad Java JBoss JVM Linux Lucene MapReduce Memcached MongoDB MySQL Ni O SQL Python Redis RFS Scala围攻Spark SSD Tokyo Cabine Tokyo暴君Voldemort分布式实时计算招募架构测试海量数据消息队列源分析爬虫高性能分类目录Apple(3)Java(11)Linux(4)no SQL(39)其他(1) Internet (7)分布式(15)实时计算( 搜索引擎(3)数据库(7)架构(8)海量数据(20)算法(11)最近的文章tenzing一个SQL在MapReduce框架上的实现(翻译)Spark的例子:K-means算法Spark的例子:SortByKeySpark的例子:统计CSDN不同邮箱的密码白痴指数。 spark第一次会议-基本概念和实例。近期评论发表于《对redis数据持久化的一些想法》 mcbill发表于《redis的hash/key lookup的实现》 yiihsia发表于《Spark范例:K-means算法》 s bear发表于《对redis数据持久化的一些想法》舒随机日记Redi S灾难恢复策略发表于《对redis数据持久化的一些想法》观点热门文章
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。