RDD、DataFrame、Dataset相互转化

本文详细介绍如何使用SparkSession初始化Spark任务,从读取本地文件到转换为DataFrame和Dataset的过程。包括通过case class创建DataFrame,利用StructType定义schema创建DataFrame,以及DataFrame与Dataset之间的相互转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化SparkSession,底层初始化sparkContext,相当于Spark任务的入口。

	val sparkSession = SparkSession.builder().appName("sparktest").master("local[2]").getOrCreate()
    val sparkContext = sparkSession.sparkContext
    val log = sparkContext.textFile("/Users/mike/Desktop/test.txt")

RDD -> DataFrame

  1. case class
case class Person(name:String,age:Int)

//转化为RDD[Person]
val rowRDD = log.map(_.split(" ")).map(x => Person(x(0),x(1).toInt))
import sparkSession.implicits._
val df = rowRDD.toDF()
df.show()
sparkSession.stop()
  1. schema(StructType的方式)
val schemaFiled = "name,age"
val schemaString = schemaFiled.split(",")
val schema = StructType(
	Array(
        StructField(schemaString(0), StringType, nullable = true),
        StructField(schemaString(1), IntegerType, nullable = true)
      )
)
//生成RDD[Row]
val rowRDD = log.map(_.split(" ")).map(x => Row(x(0), x(1).toInt))
//格式和RDD 构造DataFrame
val df = sparkSession.createDataFrame(rowRDD, schema)
df.show()
sparkSession.stop()

RDD -> Dataset

toDS()方法将RDD转化为DataSet

DataFrame <-> Dataset

  1. toDF()将Dataset转化为dataFrame
  2. df.as[Person]将DataFrame转化为DataSet

xxx -> RDD

xxx.rdd()将其他格式的数据转化为RDD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值