通过隐式转换创建toDF函数来创建DataFrame对象

方式一:Scala集合创建DataFrame

import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, SparkSession}
object CreateSparkSession {
def main(args: Array[String]): Unit = {
val sparksqlConf = new SparkConf().setMaster("local[*]").setAppName("sparksql")
val sparkSession = SparkSession.builder().config(sparksqlConf).getOrCreate()
/*
1. Scala集合创建DataFrame 默认只适合Seq集合体系
集合最好是一个元组类型的数据
集合中的toDF函数不存在,需要通过隐式转换来增强集合的执行方式
隐式转换函数不需要我们定义,在SparkSession中定义了转换DataFrame所需要的所有隐式转换函数,
但是我们需要引入这些隐式转换函数
引入转换函数是在我们创建sparkSession对象中
*/
import sparkSession.implicits._ // 导入sparkSession中的所有隐式转换函数
val array: Seq[(String, Int, String)] = Array(("zs", 20, "男"), ("ww", 30, "男"), ("zl", 25, "男"))
val dataFrame: DataFrame = array.toDF("name", "age", "sex")
dataFrame.show()
}
}

方式二:通过RDD的toDF函数创建DataFrame

import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.rdd.RDD
object CreateSparkSession {
def main(args: Array[String]): Unit = {
val sparksqlConf = new SparkConf().setMaster("local[*]").setAppName("sparksql")
val sparkSession = SparkSession.builder().config(sparksqlConf).getOrCreate()
/*
2. 通过RDD的toDF函数来创建DataFrame
RDD的创建需要依赖于SparkContext SparkContext不需要创建了,因为SparkSession中封装了一个SparkContext
*/
import sparkSession.implicits._
val sparkContext = sparkSession.sparkContext
val rdd: RDD[(String, Int, String)] = sparkContext.makeRDD(Array(("zs", 20, "男"), ("ww", 30, "男"), ("zl", 25, "男")))
val dataFrame1: DataFrame = rdd.toDF("name", "age", "sex")
dataFrame1.show()
}
}
posted @   jsqup  阅读(318)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示