spark RDD的创建方式
- 从集合(内存中创建出来)RDD
val sparkConf = new sparkConf().setMaster("local[*]").setAppName("spark") // * 号代表,当前电脑有几个核心就分几个线程,不写就是用单线程,[]中括号内的数字代表线程数 val sparkContext = new SparkContext(sparkConf) val rdd1 = sparkContext.parallelize( List(1,2,3,4) ) val add2 = sparkContext.makeRDD( List(1,2,3,4) ) rdd1.collect().foreach(println) rdd2.collect().foreach(println) sparkContext.stop()
// 或者这个
package lambert.fun.spark
import org.apache.log4j.{Level, Logger}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/** *
*
* @author Lambert
* date 2022-08-20
* explain
*/
object RDD_Memory {
def main(args: Array[String]): Unit = {
Logger.getLogger("org").setLevel(Level.ERROR)
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
val sc = new SparkContext(sparkConf)
val seq = Seq[Int](1, 2, 3, 4)
val rdd: RDD[Int] = sc.parallelize(seq) // 并行
val rdd: RDD[Int] = sc.makeRDD(seq) // makeRDD 底层就是调用了RDD的parallelize方法
rdd.collect().foreach(println)
sc.stop()
}
}
```
- 从外部存储(文件)创建RDD
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("spark") val sparkContext = new SparkContext(sparkConf) val fileRDD: RDD [ String ] = sparkContext.textFile("input") sparkContext.stop()
- 从其他的RDD创建
主要是通过一个RDD运算后,再产生新的RDD - 直接创建RDD(new)
使用new的方式直接构造RDD,一般由spark框架自身使用
理解两个概念:
- 并行:就是cpu核数的多少,有几核就代表能并行几个任务
- 并发:就是一瞬间发起的任务数量,需要排队执行
有什么不同见解可以在评论区共同讨论