spark2学习(3) 之Spark SQL

KUKA机器人在自动运行时,动作不流畅,每个点位都有停顿的解决办法 阅读详情

Spark SQL是用于结构化数据处理的Spark模块。与基本的Spark RDD API不同,Spark SQL提供的接口为Spark提供了有关数据结构和正在执行的计算的更多信息。在内部,Spark SQL使额外的优化。有几种与Spark SQL交互的方法,包括SQL和Dataset API。

创建sparksession

import org.apache.spark.sql.SparkSession

val spark = SparkSession
  .builder()
  .appName("Spark SQL basic example")
  .config("spark.some.config.option", "some-value")
  .getOrCreate()

// For implicit conversions like converting RDDs to DataFrames
import spark.implicits._

sparksql默认支持hive的功能。

创建一个DataFrame

可以从RDD,hive,hdfs,来创建DataFrame,读取一个json文件,代码如下:

json文件内容

 

无类型的DataSet操作就是DataFram操作。

dataframe操作手册地址:http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.functions$

以编程方式运行SQL查询

这里我们将刚刚的dataframe注册成一个临时表(createOrReplaceTempView),然后使用sql语句执行,使用非常方便

全局临时表

上面的临时表当会话关闭后就不存在了,如果我们想要全局的临时表需要添加createGlobalTempView

就ok了

 

创建dataset

数据集与RDD类似,但是,它们不使用Java序列化或Kryo,而是使用专门的编码器来序列化对象以便通过网络进行处理或传输。虽然编码器和标准序列化都负责将对象转换为字节,但编码器是动态生成的代码,并使用一种格式,允许Spark执行许多操作,如过滤,排序和散列,而无需将字节反序列化为对象。

sparkSQL和RDD的交互方式

第一种就是通过对象的反射,首先将文本格式的对象定义成一个case class 类型,然后执行 toDS,然后再注册临时表就ok了,代码如下:

// For implicit conversions from RDDs to DataFrames
import spark.implicits._

// Create an RDD of Person objects from a text file, convert it to a Dataframe
val peopleDF = spark.sparkContext
  .textFile("examples/src/main/resources/people.txt")
  .map(_.split(","))
  .map(attributes => Person(attributes(0), attributes(1).trim.toInt))
  .toDF()
// Register the DataFrame as a temporary view
peopleDF.createOrReplaceTempView("people")

// SQL statements can be run by using the sql methods provided by Spark
val teenagersDF = spark.sql("SELECT name, age FROM people WHERE age BETWEEN 13 AND 19")

// The columns of a row in the result can be accessed by field index
teenagersDF.map(teenager => "Name: " + teenager(0)).show()
// +------------+
// |       value|
// +------------+
// |Name: Justin|
// +------------+

// or by field name
teenagersDF.map(teenager => "Name: " + teenager.getAs[String]("name")).show()
// +------------+
// |       value|
// +------------+
// |Name: Justin|
// +------------+

第二种以编程方式指定

如果无法提前定义案例类,DataFrame则可以通过三个步骤以编程方式创建。

  1. 为原生的RDD创建Row
  2. 创建schema 的StructType 为 Row
  3. 通过SparkSession将schema 和RDD进行绑定

如下:

import org.apache.spark.sql.types._

// Create an RDD
val peopleRDD = spark.sparkContext.textFile("examples/src/main/resources/people.txt")

// The schema is encoded in a string
val schemaString = "name age"

// Generate the schema based on the string of schema
val fields = schemaString.split(" ")
  .map(fieldName => StructField(fieldName, StringType, nullable = true))
val schema = StructType(fields)

// Convert records of the RDD (people) to Rows
val rowRDD = peopleRDD
  .map(_.split(","))
  .map(attributes => Row(attributes(0), attributes(1).trim))

// Apply the schema to the RDD
val peopleDF = spark.createDataFrame(rowRDD, schema)

// Creates a temporary view using the DataFrame
peopleDF.createOrReplaceTempView("people")

// SQL can be run over a temporary view created using DataFrames
val results = spark.sql("SELECT name FROM people")

// The results of SQL queries are DataFrames and support all the normal RDD operations
// The columns of a row in the result can be accessed by field index or by field name
results.map(attributes => "Name: " + attributes(0)).show()
// +-------------+
// |        value|
// +-------------+
// |Name: Michael|
// |   Name: Andy|
// | Name: Justin|
// +-------------+
全网首发--Unet3+改进16:在不同位置添加RepLKBlock超大卷积核 本文提出了一种基于大核卷积的神经网络架构RepLKNet,旨在缩小CNN与ViTs之间的性能差距。通过重新审视CNN中的大核设计,研究证明使用少量大卷积核替代多个小核能获得更强大的性能。提出的RepLKNet采用31×31大卷积核,在ImageNet和下游任务上取得了与SwinTransformer相当或更好的结果,同时具有更低延迟。文章详细介绍了实现步骤:(1)创建RepLKBlock模块文件;(2)在模型层中添加注意力机制;(3)在UNet模型中集成RepLKBlock;(4)完成训练流程。该方法展现了 阅读详情

相关推荐

旋转矩阵推导

推导前提: 坐标使用右手坐标系,角度逆时针旋转为正。 绕X轴旋转角度为 俯仰角 即Pitch 绕Y轴旋转角度为 偏航角 即Yaw(Head) 绕Z轴旋转角度为 翻滚角 即Roll 一、平面二维坐标点的旋转 如右图所示,根据三角函数关系,可以列出向量OP与OP’的坐标表示形式: x = |OP|•cosα x′ = |OP|•cos(α+β) y = |OP|•sinα y′ = |OP|•sin(α+β) 将P′(x′,y′)表达式展开: x′ =

suixinger_lmh的随笔 1384

大数据技术之SparkSQL(超级详细)

第1章 Spark SQL概述 1.1什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和DataSet,并且作为分布式SQL查询引擎的作用。 它是将Hive SQL转换成MapRedu

wlove514的博客 1万+

R语言,charls数据库清洗、基线特征描述、logistics回归、rcs模型、森林图

【代码】R语言,charls数据库清洗、基线特征描述、logistics回归、rcs模型、森林图。

2402_87751128的博客 2513

Spark SQL

新手入门文章

ytzhyp的博客 4182

告别玄学调试:用STM32CubeMX和逻辑分析仪搞定DP83848的RMII与SMI接口

本文详细介绍了如何使用STM32CubeMX和逻辑分析仪调试DP83848的RMII与SMI接口,帮助开发者超越表象,直接观察底层通信波形。通过实战案例和高级调试技巧,解决常见问题如时钟偏移、信号完整性等,提升网络接口的稳定性和可靠性。

weixin_30752699的博客 299

AutoGenTestCase - AI大模型生成测试用例

AI技术助力高效软件测试:AutoGenTestCase工具介绍 传统手工测试存在效率低、覆盖不全等痛点。AutoGenTestCase工具集成DeepSeek、通义千问等AI大模型,能快速解析需求并自动生成标准化测试用例,将数小时工作缩短至分钟级。该工具部署简单,仅需配置APIKey即可运行,支持多种测试用例类型比例设置,并输出Markdown和Excel格式的测试用例。通过GitHub或网盘下载后,用户可按照教程完成APIKey配置、需求文档上传和用例生成等操作,显著提升测试效率与覆盖完整性。

YIqifeibaQI的博客 348

SparkSQL

大数据自学笔记——spark学习笔记

我的笔记 1万+

知识推理——TransE(知识表示、知识嵌入)

知识图谱嵌入/表示方法 TransE

missyoudaisy的博客 1831

spark学习(6)之SparkSQL基础

一、Spark SQL的基础: 1、Spark SQL的简介 Spark SQL is Apache spark’s module for working with structured data Spark SQL 是apache spark用来出来结构化数据的模块 特点: (1)容易集成成,安装好spark后就带有spark sql了 (2)统一的数据访问接口DataFrame (3)兼容hive (4)支持标准的数据访问方式:JDBC,ODBC 2、SparkSQL的核心数据模型是DataFrame:

枣泥馅的博客 2036

自动驾驶技术路线之争:纯视觉与多模态融合的成本与性能博弈

本文深入剖析了自动驾驶领域两大主流技术路线——纯视觉与多模态融合的本质差异。文章从成本结构、性能博弈与商业逻辑等多维度展开,揭示了纯视觉方案在硬件成本与数据算力投入上的权衡,以及多模态融合方案在安全冗余与感知稳定性方面的优势。这场技术路线之争,实则是车企在性能、成本与商业化落地之间寻求平衡的综合博弈。

weixin_29038303的博客 390

【扣子AI开发】如何开发一个图像生成智能体?

【扣子AI开发】如何开发一个图像生成智能体,从创建到发布

tl437002770的博客 2427

Spark 2.3.0 Spark SQL, Datasets, and DataFrames 学习笔记

一 概述spark sql是结构化数据处理模块,可以通过SQL语句和Dataset API进行结构化数据处理。1.1 SQLspark sql一个用途就是sql查询,也可以读取已经存在的hive仓库的数据。程序中运行sql语句,将会返回Dataset/DataFrame数据结构。你也可以通过使用spark-sql命令行或jdbc/odbc服务进行sql操作。1.2 Datasets和DataFra...

游园会 1333

新能源汽车电池及充电原理详解

本文详细介绍了新能源汽车的电池包结构、铅酸电池充放电原理,以及交流和直流充电的工作原理和优缺点。内容涵盖电池串联并联原因、充电设备如车载充电机、交流充电桩和直流充电桩的介绍,以及不同充电模式的连接方式。通过对充电过程的深入探讨,有助于读者理解新能源汽车的充电技术。

让你爱上电路设计 4526

机器学习H2O AI框架简介

1.  H2O框架 优势:自己实现分布式计算框架,算法种类全,有深度学习算法,同时可以通过Sparkling-water将 h2o 和spark 进行完美整合 a.底层数据层 底层数据读取Hdfs数据  s3数据  SQL 数据  noSQL数据        s3Amazon Simple Storage Service 亚马逊的云存储结构        Hive其实就是读取HDFS ...

HuFeiHu 7634

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Pandas API on Upcoming Apache Spark™ 3.2

We’re thrilled to announce that the pandas API will be part of the upcoming Apache Spark™ 3.2 release. pandas is a powerful, flexible library and has grown rapidly to become one of the standard data science libraries. Now pandas users will be able to lever

LW_ICE 317

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

即将发布的 Apache Spark 3.2 将内置 Pandas API

在即将发布的 Apache Spark™ 3.2 版本中 pandas API 将会成为其中的一部分。Pandas 是一个强大、灵活的库,并已迅速发展成为标准的数据科学库之一。现在,pan...

过往记忆大数据 2860

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python spark教程菜鸟教程_Apache Spark 最新版 3.0 发布

Apache Spark 介绍概念:Apache Spark是用于大规模数据处理的统一分析引擎。它提供Java,Scala,Python和R中的高级API,以及支持常规执行图的优化引擎。它还支持一组丰富的更高级别的工具,包括 Spark SQL用于SQL和结构化数据的处理,MLlib 机器学习,GraphX 用于图形处理,以及结构化流的增量计算和流处理。Apache Spark是一个分布式计算平台...

weixin_39669982的博客 625

spark-ml的pom文件

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/mav

weixin_39031707的博客 670

spark2.0新特性

环境支持 1、The default build is now using Scala 2.11 rather than Scala 2.10 解释:编译Spark版本的环境从Scala 2.10变成了2.11。标志着以后写Scala程序,也最好使用 2、【Deprecation】Support for Java 7,Support for Python 2.6 解释:不建议使用的版本,j

525

【亲测免费】 Spark Atlas Connector 项目推荐

Spark Atlas Connector 项目推荐 项目基础介绍和主要编程语言 Spark Atlas Connector 是一个用于跟踪 Spark SQL 和 DataFrame 转换并将元数据更改推送到 Apache Atlas 的开源项目。该项目的主要编程语言是 Scala,它充分利用了 Spark 和 Atlas 的强大功能,帮助用户在数据处理过程中实现数据血缘的跟踪和管理。 项目核心...

gitblog_00419的博客 631

精通 Spark(三)

由于本章只能检查和使用 H2O 功能的一小部分,我认为提供一个功能区域列表将是有用的。此列表取自h2o.ai/网站的h2o.ai/product/algorithms/过程模型评分工具数据概要分析广义线性模型(GLM)预测摘要统计决策树混淆矩阵聚合、过滤、分箱和派生列梯度提升(GBM)AUC切片、对数变换和匿名化K 均值命中率变量创建异常检测PCA 得分PCA深度学习多模型评分训练和验证抽样计划朴素贝叶斯网格搜索。

龙哥盟 564

Spark2.3.1使用技巧

Spark 2.3.1 使用技巧 Spark-SQL 读取JSON文件时反射表头 case class StudentInfo(id:Long,name:String,age:Int) val example = spark.read.json("/data/result.json").as(StudentInfo) example...

weixin_34268310的博客 131

Spark SQL 读写 Hive Table 部署指南(Spark 3.1.2 + Hive 3.1.2)

遵循本指南,可确保Spark 3.1.2与Hive 3.1.2无缝集成,实现高效稳定的数据读写操作。建议定期检查版本兼容性,并参考。

北桥源木 1219

CDH6.3.2添加spark-sql

前言 众所周知,CDH为了推自家的Impala,阉割掉了Spark的spark-sql工具,虽然很多时候我们并不需要spark-sql,但是架不住特殊情况下有使用它的时候,这个根据项目或者团队(个人)情况而异。我这边就是因为项目原因,需要使用spark-sql,因此从网上各种查资料,折腾了好几天,最终在CDH集群上集成了spark-sql,以下操作并不能保证百分百适配你的环境,但思路可供借鉴。 集成步骤 下载Apache-spark2.4.0 因为CDH6.3.2使用的Spark版本是2.4.0,为了避免使

丰耳的博客 6140

Spark SQL 函数全集

Summary org.apache.spark.sql.functions是一个Object,提供了约两百多个函数。 大部分函数与Hive的差不多。 除UDF函数,均可在spark-sql中直接使用。 经过import org.apache.spark.sql.functions._ ,也可以用于Dataframe,Dataset。 version 2.3.0 大部分支持Colum...

Liam's Blog (AI & BigData) 4万+

基于spark1.3.1的spark-sql实战-01

OK !好久不见,大家都忙着各自的事情,me too, 博客也好久木有更新了,因为一直比较忙 spark sql 三个核心部分: 1. 可以加载各种结构化数据源(e.g., JSON, Hive, and Parquet). 2.  可以让你通过SQL ,spark 内部程序或者外部工具,通过标准的数据库连接(JDBC/ODBC)连接spark,比如一个商业智能的工具Tableau 3.当

stark_summer的专栏 2万+
上一篇: spark2学习(2) 之RDD编程
下一篇: Apache Ranger原理与应用实践
willwill1101
博客等级 码龄11年 5粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值