RDD和DataFrame的格式转换

编程

Spark 中最基本的数据抽象是 RDD。

RDD:弹性分布式数据集 (Resilient Distributed DataSet)。

DataFrame:从Spark1.3.0版本开始,DF开始被定义为指定到列的数据集(Dataset)。DFS类似于关系型数据库中的表或者像R/Python 中的data frame 。可以说是一个具有良好优化技术的关系表。DataFrame背后的思想是允许处理大量结构化数据。DataFrame包含带schema的行。schema是数据结构的说明。

本文主要介绍两种数据格式的互相转换

1.RDD转DataFrame

由于RDD内的数据有可能是非格式化的数据,所以需要先将RDD中的数据格式化后,设置schema,例如:

val file = path+"*.log.gz"

val rdd=spark.sparkContext.textFile(file)

val lines =rdd.map(log=>log.split(ExamConstants.LOG_SPILIT)).filter(logs=>JSON.parseObject(logs(1)).get("actId").equals("3000005")).map(

logs => {

var log = JSON.parseObject(logs(1))

var data = log.getJSONObject("data")

ExamLogInfo(data.getLong("examId"),log.getString("userId"),logs(0),logs(1))

}

)

import spark.implicits._

val logDf = examLogs.toDF()

在转换为DataFrame之前,需要引入spark.implicits._

如果是格式化的数据,直接添加schema即可:

rdd.toDF("subject_id", "subject_name")

2.DataFrame转换为RDD

dataFrame.rdd

 

以上是 RDD和DataFrame的格式转换 的全部内容, 来源链接: utcz.com/z/518735.html

回到顶部