Scala
jiangda_0_0
这个作者很懒,什么都没留下…
展开
-
Scala/Java中的反射机制探索
最近看Spark源码,看到在Spark这种底层架构中用到很多Scala/Java的反射机制,在网上看了一些关于Scala/Java反射机制的原理和用处,总结如下。scala的多线程的实现依赖于JVM的,在反射机制中也是完全套用了Java的反射机制,所以本文讨论的实际上就是Java的反射机制。反射机制的用处:1、在已有一个类的对象,在运行之前并不能确定这个对象对应的Class的时候,需要在运行时原创 2017-03-08 16:53:31 · 2942 阅读 · 0 评论 -
关于ThreadLocal
从如下8点来讲解一下:1.ThreadLocal用来解决多线程程序的并发问题2.ThreadLocal并不是一个Thread,而是Thread的局部变量,当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本.3.从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Loc原创 2017-03-08 17:35:59 · 338 阅读 · 0 评论 -
Spark中的mapPartitions
在使用Spark链接到外部服务过程中,比如JDBC等,如果对于RDD中每一条信息建立一个链接,会导致链接数过多,而且在这种情况下,快速且大量的简历链接和释放,会造成比较大的资源浪费。在这种情况下,特别是如果有batch接口的情况下,通过mapPartitions,对一个Partition中的数据来说,只建立一个链接或者通过这一个链接进行batch请求,会在很大程度上的节约现有的资源,提高资源的原创 2017-03-09 15:50:31 · 947 阅读 · 0 评论 -
关于spark Executor OOM的问题引发的联想
最近被问到executor OOM如何处理的问题,一开始想可以调整spark.executor.cores的大小,因为每个executor中多个task是共享同一个heap的大小的,spark中资源的分配是以executor为单位分配的。另外在看join和cogroup的区别的时候,发现join是在cogroup基础上封装的,但是join有可能会有笛卡尔积的情况。具体原因,这里不展开。看源原创 2017-04-07 23:54:27 · 1488 阅读 · 0 评论