Spark源码中所使用的经典数据结构或者设计模式
位域法
如果一个枚举类型的元素主要用于在集合中,一般就使用
int
枚举类型,将2的不同倍数赋予每个常量。
这种表示方法让你用OR位运算将几个常量合并到一个集合中,称作位域。
在Spark
源码中进入SparkSubmit
类中就可以看到1
2
3
4
5
6
7
8
9
10
11// Cluster managers
private val YARN = 1
private val STANDALONE = 2
private val MESOS = 4
private val LOCAL = 8
private val ALL_CLUSTER_MGRS = YARN | STANDALONE | MESOS | LOCAL
// Deploy modes
private val CLIENT = 1
private val CLUSTER = 2
private val ALL_DEPLOY_MODES = CLIENT | CLUSTER
将集群类型和部署模式使用位域法来存储。
在《Effective Java》第32条中提到,但是都不推荐。。
Spark
都使用了,难道这种结构不好嘛??^_^