05 2015 档案
摘要:在spark1.2以上的版本中,默认shuffle的方式已经变成了sortshuffle(在spark.shuffle.manager修改org.apache.spark.shuffle.sort.HashShuffleManager或者org.apache.spark.shuffle.sort.S...
阅读全文
摘要:http://www.cnblogs.com/shenh062326/p/3946341.html 其实流程是从这里转载下来的,我只是在流程叙述中做了一下的标注。 当然为了自己能记住的更清楚,我没有直接copy而是打出来的。1、客户端提交作业后,启动Driver,Driver是Spark作业的Mas...
阅读全文
摘要:转自http://bit1129.iteye.com/blog/2198531代码如下:package spark.examples.streaming import java.sql.{PreparedStatement, Connection, DriverManager} import...
阅读全文
摘要:这个其实我前面已经记录过了,这里在记录一下。我可以通过参数人为的来控制分区大小,增加分区中即可增加任务的并行度,并行度高自然运行的就快了嘛。官方推荐集群中每个cpu并行的任务是2-3个(也就是2-3个partition),这样对于资源使用是最充分的那么如何调整并行度呢。在类似 sc.textFile...
阅读全文
摘要:对于官方Programming Guides的GC优化一节做了阅读。在这里记录一下我的理解,可能记录的比较混乱没有条理:我理解其实GC优化的主要目的就是在你的任务执行中使用更少的内存,进行更少的gc回收,因为GC回收会使你的任务执行的更慢。使用-verbose:gc -XX:+PrintGCDeta...
阅读全文
摘要:官网是这么说的:The first way to reduce memory consumption is to avoid the Java features that add overhead, such as pointer-based data structures and wrapper ...
阅读全文
摘要:使用spark.streaming.receiver.maxRate这个属性限制每秒的最大吞吐。官方文档如下:Maximum rate (number of records per second) at which each receiver will receive data. Effective...
阅读全文
摘要:官方是这样说的:Directory to use for "scratch" space in Spark, including map output files and RDDs that get stored on disk. This should be on a fast, local di...
阅读全文
摘要:spark sql中支持sechema合并的操作。直接上官方的代码吧。val sqlContext = new org.apache.spark.sql.SQLContext(sc)// sqlContext from the previous example is used in this exa...
阅读全文
摘要:从官网来copy过来的几种模式描述:Scala/JavaPythonMeaningSaveMode.ErrorIfExists(default)"error"(default)When saving a DataFrame to a data source, if data already exis...
阅读全文
摘要:val df = sqlContext.load("/opt/modules/spark1.3.1/examples/src/main/resources/people.json","json")df.select("name","age").save("/opt/test/namesAndAges...
阅读全文
摘要:官方这么说的[Since Spark 1.2] Configuring write ahead logs - Since Spark 1.2, we have introduced write ahead logs for achieving strong fault-tolerance guara...
阅读全文
摘要:进行节点的数据传递,或者保存数据时都会进行序列化。spark默认的是org.apache.spark.serializer.JavaSerializer。而我们要修改成org.apache.spark.serializer.KryoSerializer。
阅读全文
摘要:如果你的streaming处理数据的时间间隔比较小,并且没有窗口操作,那么可以考虑不使用序列化,这样可以减少内存和cpu的使用,加快数据处理效率
阅读全文
摘要:官方是这么说的:Cluster resources can be under-utilized if the number of parallel tasks used in any stage of the computation is not high enough. For example, ...
阅读全文
摘要:val numStreams = 5val kafkaStreams = (1 to numStreams).map { i => KafkaUtils.createStream(...) }val unifiedStream = streamingContext.union(kafkaStream...
阅读全文
摘要:使用spark.streaming.receiver.maxRate来限制你的吞吐的最大信息量。因为当streaming程序的数据源的数据量突然变大巨大,可能会导致streaming被撑住导致吞吐不过来,所以可以考虑对于最大吞吐做一下限制。
阅读全文
摘要:从官方的Programming Guides中看到的我理解streaming中的checkpoint有两种,一种指的是metadata的checkpoint,用于恢复你的streaming;一种是rdd的checkpoint的;下面的代码指的是第一种:// Function to create an...
阅读全文
摘要:在这里看到的解决方法https://issues.apache.org/jira/browse/SPARK-1729请是个人理解,有问题请大家留言。其实本身flume是不支持像KAFKA一样的发布/订阅功能的,也就是说无法让spark去flume拉取数据,所以老外就想了个取巧的办法。在flume中其...
阅读全文
摘要:有两种方式,一种是sparkstreaming中的driver起监听,flume来推数据;另一种是sparkstreaming按照时间策略轮训的向flume拉数据。最开始我以为只有第一种方法,但是尼玛问题在于driver起来的结点是没谱的,所以每次我重启streaming后发现尼玛每次都要修改flu...
阅读全文
摘要:rdd.toDebugString 是个好东西,可以输出你的RDD的组成
阅读全文
摘要:copy的官方programming guide的代码,只有一个要说一下,Accumulators的更新是在action做的,transformation操作中对于Accumulators的增加不会即时更新的,只有action只会更新。scala> val accum = sc.accumulato...
阅读全文
摘要:coalesce我理解就是将多个partition合并成少量的partition。data.coalesce(2,true)第一个参数是partition数量第二个参数是合并是是否进行shuffle操作。true是进行shuffle操作。false是不进行shuffle操作
阅读全文
摘要:def seq(a:Int, b:Int) : Int ={ math.max(a,b)}def comb(a:Int, b:Int) : Int ={ a + b}val data = sc.parallelize(List((1,3),(1,2),(1, 4),(2,3)))data.aggre...
阅读全文
摘要:这个很简单,就是取rdd中的唯一值val data1 = sc.parallelize(List(1,2,3,2,3,2,2))data1.distinct().collect输出123注意,可以调整执行并行度即data1.distinct().collect这样就会按三个partition进行并行...
阅读全文
摘要:用来找到两个rdd的交集,注意,最终的new rdd的分区数量取决于两个rdd中的最大分区数量。测试一下:val data1 = sc.parallelize(1 to 20,1)val data2 = sc.parallelize(1 to 5,2)val data3 = data1.inters...
阅读全文
摘要:我理解,就是将RDD指定的RDD进行合并。 同时保留合并数据的分区。val data1 = sc.parallelize(1 to 20)data1.partitions.lengthval data2 = sc.parallelize(25 to 30)data2.partitions.lengt...
阅读全文
摘要:sample是在数据源取样。val data = sc.parallelize(1 to 20)data.sample(true,0.4).collectsample第一个参数表示是否是重复抽样,如果是true,则抽象的结果可能会有重复的数字。而false代表抽样的结果是没有重复的。sample第二...
阅读全文
摘要:区别在于sc.map是将RDD下的所有行数据统计处理。而sc.mapPartitions是按RDD分区进行数据统计处理。测试一下:val data = sc.parallelize(1 to 6,3)def mapTest(param1:Int):Int={ println("by map,data...
阅读全文
摘要:val data1 = sc.wholeTextFiles("/opt/test")val data = sc.textFile("/opt/test/")使用textFile时,它的partition的数量是与文件夹下的文件数量相关,一个文件就是一个partition。wholeTextFiles...
阅读全文
摘要:1、我理解常用的Spark部署方式有三种1)、本地服务,就是所谓的local,在IDE上本地跑程序,用于调试2)、Standalone,使用自己的master/worker进行服务的调度。 脱离yarn的资源管理3)、Spark on yarn。 使用yarn来进行资源的调度2、在spark-env...
阅读全文
摘要:想把linux时钟调整的正常了。 网上找了找资料,找到了同步办法:http://blog.51yip.com/server/1474.html即使用:sudo yum install ntp sudo ntpdate time.nist.gov 然后将定时10分钟执行一次同步时钟*/10 * * ...
阅读全文