大数据全系列 教程
1869个小节阅读:467.8k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
DataFrame对象可以从RDD转换而来,都是分布式数据集。其实就是转换一下内部存储的结构,转换为二维表结构。通过SparkSession对象的createDataFrame方法来将RDD转换为DataFrame,通过StructType对象来定义DataFrame的“表结构”转换RDD。
项目下新建data/sql目录,并新建数据文件student.txt
xxxxxxxxxx
1,tom,22
2,lucy,21
3,peter,23
4,john,25
代码实现:
xxxxxxxxxx
package com.itbaizhan.sql
import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}
import org.apache.spark.sql.{DataFrame, Row, SparkSession}
object CreateDataFrame {
def main(args: Array[String]): Unit = {
//1.创建上下文配置文件对象
val conf = new SparkConf().setMaster("local[*]")
.setAppName("CreateDataFrame")
//2.创建执行环境入口SparkSession对象
val spark: SparkSession = SparkSession.builder()
.config(conf).getOrCreate()
//3.读取文件,映射创建RDD[Row]对象
val rdd: RDD[Row] = spark.sparkContext
.textFile("data/sql/student.txt")
.map(_.split(","))
.map(array => Row(array(0).toInt, array(1).trim, array(2).toInt))
//4.定义StructType对象,指定所有列名和各自的类型
val schema: StructType = StructType(
StructField("id", IntegerType, false) ::
StructField("name", StringType, false) ::
StructField("age", IntegerType, true) :: Nil)
//5.基于rdd对象转为DataFrame
val df: DataFrame = spark.createDataFrame(rdd, schema)
//6.打印df的表结构信息
df.printSchema()
//7.输出df中的数据
df.show()
//关闭
spark.stop()
}
}
运行输出:
xxxxxxxxxx
#打印DataFrame的表结构
root
|-- id: long (nullable = true)
|-- name: string (nullable = true)
|-- age: long (nullable = true)
#df中的数据
+---+-----+---+
|id |name |age|
+---+-----+---+
|1 |tom |22 |
|2 |lucy |21 |
|3 |peter|23 |
|4 |john |25 |
+---+-----+---+