package com.zpark.lucas
/**
* @Author Lucas
* @Date 2019/12/30 14:49
* @Version 1.0
*/
import jdk.nashorn.internal.runtime.regexp.joni.constants
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}
import org.apache.spark.sql.{DataFrame, Row, SQLContext}
import org.apache.spark.{SparkConf, SparkContext}
object RDD2DataFrameProgram {
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
conf.setAppName("RDD2DataFrameProgram")
conf.setMaster("local")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
//第一步,构造出元素为ROW的普通RDD
val line: RDD[String] = sc.textFile("C:\\Users\\S\\Desktop\\stus.txt")
val stusRDD: RDD[Row] = line.map(line => {
val stu: Array[String] = line.split(",")
Row(stu(0).toInt, stu(1), stu(2).toInt)
})
//第二步,通过编程方式动态构造元数据
val structType = StructType(Array(
StructField("id", IntegerType, true),
StructField("name", StringType, true),
StructField("age", IntegerType, true)
))
//第三步,进行RDD到DataFrame的转换
val stuDF: DataFrame = sqlContext.createDataFrame(stusRDD, structType)
//继续正常使用
stuDF.registerTempTable("stus")
val ageResult = sqlContext.sql("select * from stus where age<=18")
ageResult.show()
//DataFrame也可以转换为RDD,然后调用RDD的算子进行计算
ageResult.rdd.collect().foreach(row => println(row))
}
}
RDD转DataFrame
最新推荐文章于 2025-09-08 17:27:11 发布
本文详细介绍如何在Apache Spark中将Resilient Distributed Dataset (RDD)转换为DataFrame,包括构造元数据、转换过程及后续数据操作。通过具体实例,展示了从文件读取数据,创建Row类型的RDD,定义结构类型,并使用SQLContext创建DataFrame,最后执行SQL查询的过程。
1696

被折叠的 条评论
为什么被折叠?



