Spark-sql编程

创建子模块并添加依赖

在IDEA中创建一个名为Spark-SQL的子模块。

在该子模块的pom.xml文件中添加Spark-SQL的依赖,具体依赖为org.apache.spark:spark-sql_2.12:3.0.0。

编写 Spark-SQL 测试代码

定义一个User case class,用于表示用户信息(id、name、age)。

创建一个名为SparkSQLDemo的object,并在其中编写main方法作为程序的入口。

在main方法中,首先创建SparkConf和SparkSession对象,用于配置和启动Spark环境。

使用SparkSession对象的read.json方法读取一个JSON格式的用户数据文件,并将其转换为一个DataFrame对象。

使用DataFrame的show方法展示数据内容。

演示SQL风格语法:通过createOrReplaceTempView方法将DataFrame注册为临时视图,然后使用spark.sql方法执行SQL查询,并展示查询结果。

演示DSL风格语法:使用DataFrame的select方法选择特定列,并展示结果。

演示RDD、DataFrame、DataSet之间的转换:

创建一个RDD对象,并将其转换为DataFrame对象,再进一步转换为DataSet对象。

演示如何将DataSet对象转换回DataFrame和RDD,并遍历RDD中的数据。

停止 SparkSession

在main方法的最后,调用spark.stop()方法停止SparkSession,释放资源。

自定义函数( UDF

UDF允许用户定义自己的函数,并在Spark SQL查询中使用。

实验展示了如何注册一个简单的UDF,该函数接收一个字符串并返回一个新的字符串(前缀为"Name:")。

通过将DataFrame注册为临时视图,并在SQL查询中使用自定义的UDF,展示了UDF的实际应用。

自定义聚合函数( UDAF

UDAF用于实现复杂的聚合逻辑,是Spark SQL处理聚合计算的重要工具。

实验展示了两种实现UDAF的方法:弱类型UDAF和强类型UDAF。

弱类型 UDAF ‌:通过继承UserDefinedAggregateFunction类并实现相关方法,定义了一个计算平均工资的聚合函数。该实现方式较为传统,适用于Spark 3.0之前的版本。

强类型 UDAF ‌:利用Aggregator类创建了一个更为类型安全的平均工资聚合函数。这种实现方式在Spark 3.0及以后版本中更为推荐。

在两种实现方式中,都展示了如何将UDAF注册到SparkSession中,并在SQL查询中使用它来计算平均工资。

相关推荐
猫头虎25 分钟前
2025最新OpenEuler系统安装MySQL的详细教程
linux·服务器·数据库·sql·mysql·macos·openeuler
Sylvan Ding30 分钟前
度量空间数据管理与分析系统——大数据泛构课程作业-2025~2026学年. 毛睿
大数据·深圳大学·大数据泛构·度量空间数据管理与分析系统·毛睿·北京理工大学珠海校区
面向Google编程3 小时前
Flink源码阅读:JobManager的HA机制
大数据·flink
Tony Bai3 小时前
【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡
大数据·数据库·分布式·架构
wb043072014 小时前
SQL工坊不只是一个ORM框架
数据库·sql
汽车仪器仪表相关领域5 小时前
全自动化精准检测,赋能高效年检——NHD-6108全自动远、近光检测仪项目实战分享
大数据·人工智能·功能测试·算法·安全·自动化·压力测试
大厂技术总监下海5 小时前
根治LLM胡说八道!用 Elasticsearch 构建 RAG,给你一个“有据可查”的AI
大数据·elasticsearch·开源
石像鬼₧魂石7 小时前
22端口(OpenSSH 4.7p1)渗透测试完整复习流程(含实战排错)
大数据·网络·学习·安全·ubuntu
TDengine (老段)8 小时前
TDengine Python 连接器进阶指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
数据猿10 小时前
【金猿CIO展】如康集团CIO 赵鋆洲:数智重塑“顶牛”——如康集团如何用大数据烹饪万亿肉食产业的未来
大数据