Spark SQL实战(06)-RDD与DataFrame的互操作

简介: 包含特定对象类型的 RDD 的schema。这种基于反射的方法可以使代码更简洁,在编写 Spark 应用程序时已知schema时效果很好

val spark = SparkSession.builder()

 .master("local").appName("DatasetApp")

 .getOrCreate()


Spark SQL支持两种不同方法将现有RDD转换为DataFrame:


1 反射推断

包含特定对象类型的 RDD 的schema。

这种基于反射的方法可以使代码更简洁,在编写 Spark 应用程序时已知schema时效果很好


val peopleRDD: RDD[String] = spark.sparkContext.textFile(

 "/Users/javaedge/Downloads/sparksql-train/data/people.txt")


// RDD => DF

// RDD

val peopleDF: DataFrame = peopleRDD.map(_.split(","))

 // RDD

 .map(x => People(x(0), x(1).trim.toInt))

 // DF

 .toDF()


2 通过编程接口

构造一个schema,然后将其应用到现有的 RDD。


虽然这种方法更冗长,但它允许在运行时构造 Dataset,当列及其类型直到运行时才知道时很有用。


step1

val peopleRDD: RDD[String] = spark.sparkContext.textFile(

 "/Users/javaedge/Downloads/sparksql-train/data/people.txt")

// RDD

val peopleRowRDD: RDD[Row] = peopleRDD.map(_.split(","))

 .map(x => Row(x(0), x(1).trim.toInt))


step2

val struct = StructType(

   StructField("name", StringType, nullable = true) ::

     StructField("age", IntegerType, nullable = false) :: Nil)


step3

使用SparkSession的createDataFrame方法将RDD转换为DataFrame

val peopleDF: DataFrame = spark.createDataFrame(peopleRowRDD, struct)

peopleDF.show()

目录
相关文章
|
22天前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
30 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
22天前
|
消息中间件 分布式计算 Kafka
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
26 0
|
22天前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
33 0
|
22天前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
61 0
|
22天前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
23 0
|
22天前
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
29 0
|
22天前
|
SQL 存储 分布式计算
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
28 0
|
22天前
|
SQL 分布式计算 大数据
大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
28 0
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
92 13