解析器集成
Scala解析器处理一般过程:
1 将用户输入每一行编译成一个类
2 将该类载入到JVM中
3 调用该类中的某个函数
内存管理
1 未序列化Java对象存储在内存中
2 序列化的数据存于内存中
3 存于磁盘中
内存使用LRU(最近最少)回收算法管理
RDD编程接口
1 RDD分区(Partitions)
2 RDD首选位置(PreferredLocations):离数据最近的位置
3 RDD依赖关系(Dependencies):窄依赖和宽依赖
>窄依赖:每个父类RDD的分区都至多被一个子RDD的分区使用
>宽依赖:多个子RDD的分区依赖同一个父RDD的分区
4 RDD分区计算(Iterator)
5 RDD分区函数(Partitioner)
>哈希分区划分器(HashPartitioner)
>范围分区划分器(RangePartitioner)
且Partitioner只存在键值对RDD中,非键值对RDD其partitioner值为None
创建操作
1.并行化集合创建操作
parallelize、makeRDD—-后者可以指定每一个分区的首选位置
2.外部存储创建操作
textFile、wholeTextFiles、SequenceFile(针对Hadoop存储二进制形式的键值对)、hadoopFile、newAPIHadoopFile