首先RDD是弹性分布式数据集(Resilience distributes Datasets )的简称,即一个被分区的数据集。RDD的来源只有两种:一种是从内存中的集合和外部存储系统,另外一种是通过转换操作来自其他RDD
第一, RDD分区
1,查看分区
valrddtxt=sc.textFile("hdfs:/tmp/testdata.txt")
(需要验证:使用hdfs://192.168.2.242/tmp/testdata.txt没法访问)
rddtxt.partitions.size
显示结果: res8:Int = 2
2,设置分区
valrddtxt=sc.textFile("hdfs:/tmp/testdata.txt",4) //这里的4代表是最小分区数量
rddtxt.partitions.size
显示结果: res8:Int = 5
第二, RDD优先位置
RDD优先位置属性与spark中调度相关,返回的是此RDD的每个partition所存储的位置,
valrdd=sc.textFile("hdfs:/tmp/testdata.txt")
valhadoopRdd=rdd.dependencies(0).rdd
hadoopRdd.partitions.size
hadoopRdd.preferredLocations(hadoopRdd.partitions(0))
结果显示:res5: Seq[String] = ListBuffer(hadoop03, hadoop04)