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







相关文章
|
4月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
85 0
|
4月前
|
SQL 分布式计算 数据挖掘
Spark_Day07:Spark SQL(DataFrame是什么和数据分析(案例讲解))
Spark_Day07:Spark SQL(DataFrame是什么和数据分析(案例讲解))
73 0
|
3月前
|
存储 SQL 分布式计算
性能优化:Spark SQL中的谓词下推和列式存储
性能优化:Spark SQL中的谓词下推和列式存储
|
3月前
|
SQL 分布式计算 测试技术
使用UDF扩展Spark SQL
使用UDF扩展Spark SQL
|
3月前
|
SQL 数据采集 分布式计算
Spark SQL中的聚合与窗口函数
Spark SQL中的聚合与窗口函数
|
3月前
|
SQL JSON 分布式计算
Spark SQL简介与基本用法
Spark SQL简介与基本用法
|
3月前
|
SQL 分布式计算 数据处理
Spark的生态系统概览:Spark SQL、Spark Streaming
Spark的生态系统概览:Spark SQL、Spark Streaming
|
4月前
|
SQL 分布式计算 Java
Spark 基础教程:wordcount+Spark SQL
Spark 基础教程:wordcount+Spark SQL
34 0
|
4月前
|
存储 SQL 定位技术
数据库基础(六):T-SQL语言程序设计、游标定义与使用及存储过程创建与信息查找
数据库基础(六):T-SQL语言程序设计、游标定义与使用及存储过程创建与信息查找
|
4月前
|
SQL 分布式计算 Java
Note_Spark_Day08:Spark SQL(Dataset是什么、外部数据源、UDF定义和分布式SQL引擎)
Note_Spark_Day08:Spark SQL(Dataset是什么、外部数据源、UDF定义和分布式SQL引擎)
46 0