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()

目录
相关文章
|
2月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
214 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
8天前
|
SQL 分布式计算 Java
Spark SQL向量化执行引擎框架Gluten-Velox在AArch64使能和优化
本文摘自 Arm China的工程师顾煜祺关于“在 Arm 平台上使用 Native 算子库加速 Spark”的分享,主要内容包括以下四个部分: 1.技术背景 2.算子库构成 3.算子操作优化 4.未来工作
|
2月前
|
SQL JSON 分布式计算
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
|
3月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
115 0
|
8月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
345 0
|
8月前
|
SQL 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
187 0
|
3月前
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
116 0
|
5月前
|
SQL 存储 分布式计算
|
8月前
|
SQL 分布式计算 数据挖掘
Spark_Day07:Spark SQL(DataFrame是什么和数据分析(案例讲解))
Spark_Day07:Spark SQL(DataFrame是什么和数据分析(案例讲解))
188 0
|
8月前
|
SQL 分布式计算 关系型数据库
Spark【Spark SQL(二)RDD转换DataFrame、Spark SQL读写数据库 】
Spark【Spark SQL(二)RDD转换DataFrame、Spark SQL读写数据库 】