// 创建RDD 得 SparkContext 环境
val sparkConf: SparkConf = new SparkConf().setAppName("haha").setMaster("local[*]")
val sc = new SparkContext(sparkConf)
// 创建 spark sql 环境
val spark: SparkSession = SparkSession.builder().master("local[*]").appName("haha").getOrCreate()
// 创建 Spark streaming 环境
val sparkConf: SparkConf = new SparkConf().setAppName("haha").setMaster("local[*]")
val ssc = new StreamingContext(sparkConf,Seconds(3))
SparkSql是将SparkSql转换成RDD然后再执行
SparkSql提供了两个数据抽象:DataSet和DataFrame
共性
RDD
使用java序列化,序列化结果比较大,而且数据存储在java对内存中,导致gc比较频繁
RDD[Person],以person为类型参数,但Spark本身不了解Person的内部结构
类型安全,写代码时就可以看出是否出错
val spark: SparkSession = SparkSession.builder().master("local[*]").appName("haha").getOrCreate()
import spark.implicits._
val ssc: SparkContext = spark.sparkContext
val rdd: RDD[(String, Int)] = ssc.makeRDD(Array(("a", 1), ("b", 2)))
rdd.foreach(line => {
println(line._1 + "_" +line._2)
})