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

相关文章
|
9月前
|
SQL JSON 分布式计算
Spark SQL架构及高级用法
Spark SQL基于Catalyst优化器与Tungsten引擎,提供高效的数据处理能力。其架构涵盖SQL解析、逻辑计划优化、物理计划生成及分布式执行,支持复杂数据类型、窗口函数与多样化聚合操作,结合自适应查询与代码生成技术,实现高性能大数据分析。
601 2
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
460 4
|
SQL 分布式计算 Java
Spark SQL向量化执行引擎框架Gluten-Velox在AArch64使能和优化
本文摘自 Arm China的工程师顾煜祺关于“在 Arm 平台上使用 Native 算子库加速 Spark”的分享,主要内容包括以下四个部分: 1.技术背景 2.算子库构成 3.算子操作优化 4.未来工作
1988 0
|
SQL 安全 数据挖掘
牛客网刷题之SQL篇:非技术快速入门39T
这篇文章是关于牛客网上的SQL刷题教程,涵盖了基础的SQL运算符和多个实际的数据分析场景,旨在帮助非技术人员快速入门SQL。
815 0
牛客网刷题之SQL篇:非技术快速入门39T
|
SQL JSON 分布式计算
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
414 0
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
494 0
|
10月前
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
493 0
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
1138 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
627 79
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
359 0