四.SparkSQL中DataFrame与RDD互操作之一:反射方式

一.引言

     Spark SQL支持两种不同的方法将现有RDD转换为数据集。第一种方法使用反射来推断包含特定类型对象的RDD的模式。这种基于反射的方法可以使代码更简洁,并且在编写Spark应用程序时已经了解了模式,因此可以很好地工作。详细资料参考  DataFrame与RDD互操作之反射

二.实例操作演示
在开始之前现在项目的根路径下创建一个infos.txt文件,里面插入下面这种数据,以便进行学习
1,李国辉,26
2,华华,23
3,ligh,24

下面开始
import org.apache.spark.sql.SparkSession
// DataFrame和RDD的互操作之反射
object DataFrameRDDApp {

def main(args: Array[String]) {

val spark = SparkSession.builder().appName("DataFrameRDDApp").master("local[2]").getOrCreate()

val rdd = spark.sparkContext.textFile("infos.txt")

//导入隐式转换,不然没有toDF方法转换为DataFrame
import spark.implicits._

//通过split方法截取到的数组,然后依次放进一个Info类中,最后通过toDF方法获取到DataFrame数据
val infoDF = rdd.map(_.split(",")).map(line=>Info(line(0).toInt,line(1),line(2).toInt)).toDF()

//在控制台打印前20条数据
infoDF.show()

在这里插入图片描述

//过滤年龄大于24的数据
infoDF.filter(infoDF.col(“age”)>24).show()
在这里插入图片描述

/**把DataFrame数据变成一个表进行操作**/

infoDF.createOrReplaceTempView("infos")

spark.sql("select * from infos where age >23").show()

在这里插入图片描述
spark.stop()
}
//创建一个case class类,目的就是把数据塞进一个类中,使之可以像一个表一样
case class Info(id: Int, name: String, age: Int)
}

三.总结

使用反射来推断包含了特定数据类型的RDD的元数据(元数据就是case class)

使用DataFrame API或者sql方式进行编程

以上就是DataFrame与RDD互操作的第一种方式:放射方式

  • 当你走的时候也许别人正在跑,当你跑的时候也许别人比你跑的更快。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值