Spark SQL快速入门(进阶)(上)

简介: Spark SQL快速入门(进阶)(上)

0x00 教程内容


  1. 基础环境准备
  2. Spark SQL 基础编程操作
  3. 执行 SQL 语句
  4. 保存 DataFrame 为其他格式
  5. 支持多种数据源

本文的前置教程课程为: Spark SQL快速入门(基础)


0x01 基础环境准备


1. 启动 Spark-Shell
spark-shell



2. 准备数据
vi /home/hadoop-sny/datas/teacher.json


{"name":"shaonaiyi", "age":"30", "height":198}
{"name":"shaonaier", "age":"28", "height":174}
{"name":"shaonaisan", "age":"25", "height":178}
{"name":"shaonaisi", "age":"21", "height":183}
{"name":"shaonaiwu", "age":"32", "height":165}


3. 生成DataFrame

在 spark-shell 中输入如下代码:

import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder().appName("PersonApp").getOrCreate()
import spark.implicits._
val teacherDF = spark.read.json("/home/hadoop-sny/datas/teacher.json")


0x02 Spark SQL 基础编程操作


1. show()
teacherDF.show()


show():显示所有的数据

show(n) :显示前n条数据

show(true): 字段最多显示20个字符,默认为true

show(false): 取消最多显示20个字符的限制

show(n, true):显示前n条并最多显示20个字符


image.png


字段最多显示20个字符的意思是,比如name字段,名称太长,超过了20个字符的话,会显示成 ...,如果不超过则不会。

2. printSchema()

打印数据表的 Schema信息(结构):

teacherDF.printSchema()


image.png


3. 获取指定字段的统计信息
teacherDF.describe("height").show() //其中,Count:记录条数,Mean:平均值,Stddev:样本标准差,Min:最小值,Max:最大值



image.png


4. 获取数据操作

collect():获取所有数据到数组

collectAsList():获取所有数据到List

teacherDF.collect()
teacherDF.collectAsList()


image.png


first(): 获取第一行记录;

head(n):获取前 n 行记录;

take(n): 获取前 n 行数据;

takeAsList(n): 获取前 n 行数据,并以 List 的形式展示。

PS:head与take的结果其实是一样的。


image.png


5. 查询操作

查询名称为 shaonaiyi 或 年龄是30岁的数据:

teacherDF.where("name = 'shaonaiyi' or age = 28").show()



image.png


展示所有的老师名:

teacherDF.select("name").show()


image.png


展示所有的老师名及身高:

teacherDF.select("name", "height").show()


image.png


6. 过滤操作

展示所有年龄为30岁的老师,打印老师的名称与身高:

teacherDF.filter(teacherDF("age").equalTo("30")).select("name", "height").show()


image.png


limit(n)方法获取指定的 DataFrame 的前 n 行记录,得到的是一个新转化生成的 DataFrame 对象。

teacherDF.limit(3).show()


image.png


7. 排序操作

排序操作有两种方法:orderBy()sort()

都是按指定字段排序,默认为升序

desc:降序

asc :升序

teacherDF.orderBy(teacherDF("height").desc).show(false)


image.png

相关文章
|
1月前
|
SQL 分布式计算 Java
Spark SQL向量化执行引擎框架Gluten-Velox在AArch64使能和优化
本文摘自 Arm China的工程师顾煜祺关于“在 Arm 平台上使用 Native 算子库加速 Spark”的分享,主要内容包括以下四个部分: 1.技术背景 2.算子库构成 3.算子操作优化 4.未来工作
|
3月前
|
SQL JSON 分布式计算
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
|
4月前
|
SQL 安全 数据挖掘
牛客网刷题之SQL篇:非技术快速入门39T
这篇文章是关于牛客网上的SQL刷题教程,涵盖了基础的SQL运算符和多个实际的数据分析场景,旨在帮助非技术人员快速入门SQL。
262 0
牛客网刷题之SQL篇:非技术快速入门39T
|
4月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
131 0
|
4月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
125 0
|
4月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
105 0
|
9月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
361 0
|
9月前
|
SQL 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
195 0
|
4月前
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
134 0
|
6月前
|
SQL 存储 分布式计算