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()

  }
相关推荐
TechWayfarer4 分钟前
IP精准定位服务在快递网点规划中的应用:如何用客户位置数据辅助选址
大数据·网络·python·tcp/ip·交通物流
leduo668899o5 分钟前
知识付费系统深度测评:7款平台,内容加密+视频水印功能实测对比
大数据·网络·音视频
聚城云-GeecityCloud10 分钟前
数字化破局|不分物业规模,皆可全新升级
大数据·人工智能
保卫大狮兄19 分钟前
什么是物料编码?使用ERP之前做物料编码时需要注意什么?
大数据
captain_AIouo1 小时前
深耕海外市场,autoAGC攻破品牌跨境内容运营难题
大数据·人工智能·经验分享·产品运营·aigc·内容运营
志栋智能1 小时前
超自动化运维:如何降低人为错误?
大数据·运维·网络·人工智能·自动化
久菜盒子工作室1 小时前
生益科技 经营分析
大数据·人工智能·科技
isNotNullX1 小时前
维度建模有哪些类型?详解维度建模三大模型
大数据
MageGojo1 小时前
做节日活动页时,如何用 API 快速生成对联内容
javascript·python·节日·对联生成
互联网江湖1 小时前
中国跨境电商,正在走出漫长的雨季?
大数据·人工智能