RDD -> Dataset
val ds = rdd.toDS()
RDD -> DataFrame
val df = spark.read.json(rdd)
Dataset -> RDD
val rdd = ds.rdd
Dataset -> DataFrame
val df = ds.toDF()
DataFrame -> RDD
val rdd = df.toJSON.rdd
DataFrame -> Dataset
val ds=df.as[类型]
案例:
项目目录:
利用IDEA工具编写WordCount:
//使用开发工具完成 Spark 的wordcount的开发
//local模式
//创建SparkConf对象
//设置Spark计算框架 的运行环境 local[*]本地
val config: SparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount")//创建Spark上下文对象
val sc = new SparkContext(config)//读取文件,将文件内容一行一行读取出来
val lines: RDD[String] = sc.textFile("input/")//input下的两个文件
//将一行一行数据分解一个一个的单词
val words: RDD[String] = lines.flatMap(_.split(" "))//为了统计方便 将单词的数据结果进行结构的转换
val wordToOne: RDD[(String, Int)] = words.map((_, 1))//对转换结构后的数据进行聚合
val wordToSum: RDD[(String, Int)] = wordToOne.reduceByKey(_+_)//将统计结果采集出来
val result: Array[(String, Int)] = wordToSum.collect()//将结果打印
//println(result)
result.foreach(println)
程序运行结果:
20/02/22 23:38:20 INFO DAGScheduler: Job 0 finished: collect at SparkWordCount.scala:25, took 0.382258 s
(scala,1)(word,1)(hello,2)
20/02/22 23:38:20 INFO SparkContext: Invoking stop()from shutdown hook