Spark SQL程序设计(1)

简介: Spark SQL编写流程 1. SparkSession对象 封装了spark sql执行环境信息,是所有Spark SQL程序的唯一入口 sparkSession中包含  sparkContext和sqlContext两个对象,不用再自己创建sparkContext 2.

Spark SQL编写流程


1. SparkSession对象

封装了spark sql执行环境信息,是所有Spark SQL程序的唯一入口

sparkSession中包含  sparkContext和sqlContext两个对象,不用再自己创建sparkContext

2. 创建DataFrame或Dataset

Spark SQL支持各种数据源

3. 在DataFrame或Dataset之上进行transformation和action

Spark SQL提供了多种transformation和action函数

4. 返回结果

保存到HDFS中,或直接打印出来


val spark=SparkSession.build
                   .master("local")
                   .appName("appName")
                   .getOrCreate()

// 注意,后面所有程序片段总的spark变量均值SparkSession

// 将RDD隐式转换为DataFrame

import spark.implicits._


DataFrame与Dataset

1. DataFrame=Dataset[Row]

row表示一行数据,例如Row=["1",23,44]

RDD /DataFream/Dataset 之间可以相互转化

2. DataFream

内部数据无类型统一为row

DataFream是一种特殊的Dataset

3. Dataset

内部数据有类型,需要用户自己设定



Spark SQL数据源


RDD->DataFrame:反射方式


1.定义case class ,作为RDD的schema

2. 直接通过RDD.toDF,将RDD转为DataFream


import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.Row
case class User(userID:Long,gennder:String, age: Int, occupation: String, zipcode: String)

val userRdd=sc.textFile("//")
val userRDD=usrRdd.map(_.split("::")).map(p=>User(p(0).ToLong,p(1).ToStringp(2).toInt, p(3), p(4)))

val userDF=userRDD.toDF()

userDF.count()


json->DataFrame


val userjson=spark.read.format("json").load("//user.json")  //一行json数据要在一行
userjson.take(10)
 
val userjson=spark.read.json("")
userjson.take(10)


text->DataSet



val userDS=spark.read.textFile("").map(_.split(":"))


RDD、DataFrame与Dataset的关系

val ds = df.as[Person] // DataFrame -> Dataset
val df2 = ds.toDF() / Dataset -> DataFrame
val rdd1 = ds.rdd // Dataset -> RDD
val rdd2 = df.rdd // DataFrame -> RDD







相关文章
|
28天前
|
SQL JSON 分布式计算
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
|
2月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
57 0
|
2月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
85 0
|
2月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
47 0
|
2月前
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
68 0
|
2月前
|
SQL 存储 分布式计算
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
45 0
|
4月前
|
SQL 存储 分布式计算
|
7月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
278 0
|
7月前
|
SQL 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
173 0
|
7月前
|
SQL 分布式计算 数据挖掘
Spark_Day07:Spark SQL(DataFrame是什么和数据分析(案例讲解))
Spark_Day07:Spark SQL(DataFrame是什么和数据分析(案例讲解))
175 0

热门文章

最新文章