SparkSql在最先开始的时候是怎么和RDD交互的

这篇博客介绍了如何使用SparkSQL将文本文件转换为DataFrame。首先通过SparkSession读取数据,然后定义数据结构(StructType),接着将数据转换为RowRDD,最后通过createDataFrame创建DataFrame并注册为临时视图。虽然此过程较为繁琐,但它是SparkSQL早期处理数据的方式,后续被样例类的简便方法替代,尽管底层原理相同。
摘要由CSDN通过智能技术生成

SparkSql在最先开始的时候是数据元与数据分开的

package com.sparksql

import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, Row, SparkSession}
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}

object DataFrameFromStuctType {
  def main(args: Array[String]): Unit = {
    //SparkSession
    val spark: SparkSession = SparkSession
      .builder()
      .master("local")
      .appName("DataFrameFromStuctType")
      .getOrCreate()

    val lineRDD: RDD[String] = spark.sparkContext.textFile("C:\\Users\\小象\\Desktop\\6月\\0627\\resources\\people.txt")

    //DataFrame:(表头信息)元信息,元数据 (name,age)
    val scheme = StructType(List(StructField("name",StringType),StructField("age",IntegerType)))

    //DataFrame:真正需要处理的数据,Row
    val rowRDD: RDD[Row] = lineRDD.map(line => {
      val linearray: Array[String] = line.split(",")
      Row(linearray(0), linearray(1).trim.toInt)
    })

    //DataFrame数据框,可以把peopleDF当做一个二维表
    val peopleDF: DataFrame = spark.createDataFrame(rowRDD,scheme)

    peopleDF.createOrReplaceTempView("people")

    spark.sql("select avg(age) avgage from people").show()

    spark.stop()
  }
}

但是这种方法由于比较麻烦,所以后来被样例类的方式取代了,不过底层其实还是它只是反射分装了而已

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值