Spark10- RDD转DataFrame的三种方式

一、手动直接转换

复制代码
  def rddToDf1(): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("hello world")
    val spark = SparkSession.builder().config(conf).getOrCreate()
    import spark.implicits._
    val sc = spark.sparkContext
    val rdd: RDD[(String, Int)] = sc.parallelize(Array(("李四", 10), ("zs", 20), ("王无", 21)))
    rdd.toDF("name","age").show
  }

二、使用样例类转换

复制代码
  def rddToDf2(): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("hello world")
    val spark = SparkSession.builder().config(conf).getOrCreate()
    import spark.implicits._
    val sc = spark.sparkContext
    val rdd: RDD[(String, Int)] = sc.parallelize(Array(("李四", 10), ("zs", 20), ("王无", 21)))
    val rdd2: RDD[User] = rdd.map(line => {
      User(line._1, line._2)
    })
    rdd2.toDF().show()
  }

  case class User(name: String, age: Int)

三、通过API转换

复制代码
  def rddToDf3(): Unit = {
     val conf = new SparkConf().setMaster("local[*]").setAppName("hello world")
    val spark = SparkSession.builder().config(conf).getOrCreate()
    val sc = spark.sparkContext
    val rdd: RDD[(String, Int)] = sc.parallelize(Array(("李四", 10), ("zs", 20), ("王无", 21)))
    val rowRdd: RDD[Row] = rdd.map(x => Row(x._1, x._2))
    val types = StructType(Array(StructField("name", StringType), StructField("age", IntegerType)))
    val frame: DataFrame = spark.createDataFrame(rowRdd, types)
    frame.show()

  }
相关推荐
掘金安东尼2 小时前
为什么浏览器要限制 JavaScript 定时器?
前端·javascript·github
学前端搞口饭吃2 小时前
react context如何使用
前端·javascript·react.js
芜青3 小时前
【Vue2手录11】Vue脚手架(@vue_cli)详解(环境搭建+项目开发示例)
前端·javascript·vue.js
麦麦大数据4 小时前
J002 Vue+SpringBoot电影推荐可视化系统|双协同过滤推荐算法评论情感分析spark数据分析|配套文档1.34万字
vue.js·spring boot·数据分析·spark·可视化·推荐算法
BillKu8 小时前
Vue3 + Element-Plus 抽屉关闭按钮居中
前端·javascript·vue.js
DevilSeagull8 小时前
JavaScript WebAPI 指南
java·开发语言·javascript·html·ecmascript·html5
大怪v9 小时前
前端佬:机器学习?我也会啊!😎😎😎手“摸”手教你做个”自动驾驶“~
前端·javascript·机器学习
青鱼入云10 小时前
【面试场景题】电商订单系统分库分表方案设计
大数据·面试·职场和发展
在未来等你11 小时前
Kafka面试精讲 Day 12:副本同步与数据一致性
大数据·分布式·面试·kafka·消息队列