大数据全系列 教程
1869个小节阅读:466.9k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
RDD->DataSet
SparkSQL能够自动将包含有case类的RDD转换成DataSet,case类定义了table的结构,case类属性通过反射变成了表的列名。
DataSet->RDD
DataSet其实也是对RDD的封装,所以可以直接获取内部的RDD。
xxxxxxxxxx
package com.itbaizhan.sql
import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{Dataset, SparkSession}
object DataSetToRDD {
def main(args: Array[String]): Unit = {
//1.创建配置文件对象
val conf: SparkConf = new SparkConf()
.setMaster("local[*]")
.setAppName("DataSetToRDD")
//2.创建SparkSession对象
val spark: SparkSession = SparkSession.builder()
.config(conf).getOrCreate()
//4.添加隐式转换
import spark.implicits._
//5.读取文件并使用样例类创建RDD对象
val rdd: RDD[Student] = spark.sparkContext
.textFile("data/sql/student.txt")
//"1,tom,22"->Array("1","tom","22")
.map(_.split(","))
//Array(1,tom,22)->Student(1,"tom",22)
.map(arr => Student(arr(0).toInt, arr(1), arr(2).toInt))
//6.RDD->Dataset
val ds: Dataset[Student] = rdd.toDS()
ds.printSchema()
ds.show()
//7.DataSet->RDD
val rdd1: RDD[Student] = ds.rdd
//8.数组中的元素为Student类的对象,更加方便的获取数据
val students: Array[Student] = rdd1.collect()
println(students(0))
println(students(0).id)
println(students(0).name)
println(students(0).age)
//3.关闭spark
spark.stop()
}
}