SparkSQL中DataFrame Operations操作(select、filter、groupBy、count)

动态知识图谱构建:从本体论到工程实践 知识图谱作为语义网和人工智能领域的核心技术,旨在通过结构化的方式表示和组织知识。其核心原理在于将实体、概念及其关系建模为图结构,从而支持复杂的语义推理和关联查询。这一技术为机器理解数据间的深层联系提供了基础,在智能推荐、企业知识管理和学术研究等领域具有重要价值。通过结合自然语言处理(NLP)和图数据库技术,系统能够从非结构化数据中自动抽取知识,并构建动态演化的认知网络。本文以“本体论章鱼”项目为例,探讨了如何实现从静态本体到动态知识网络的范式转变,并详细解析了其分布式感知、适应性学习的架构设计,为构建灵活可 阅读详情

注意:此处用的spark version 1.6.0,版本不同,SparkSQL写代码时不太一样,比如要查询所有用户,并且使每一位用户年龄增加1.

spark 2.1.0写法为:

df.select($"name", $"age" + 1).show()
spark 1.6.0写法为:
df.select(df("name"),df("age")+1).show()

1.创建DataFrame

val df = new SQLContext(sc).read.json("E:\\spark-2.1.0\\spark-2.1.0\\examples\\src\\main\\resources\\people.json")

2.查看DataFrame内容

df.show()

结果如图所示:


3.查看Schema

df.printSchema()


4.Select操作

4.1 只查看姓名

df.select("name").show()

4.2 查看所有姓名、年龄

df.select("name","age").show()

4.3 查看所有姓名,同时使每个人年龄增加1

df.select(df("name"),df("age")+1).show() 

注意:不能写成这样:

df.select("name","age"+1).show()
否则会报如下错误:
Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve 'age1' given input columns age, name;

5.Filter操作

查询年龄大于21的用户

df.filter(df("age")>21).show()


6.GroupBy操作

按年龄分组查看用户

df.groupBy("age").count().show()

7.完整代码

/**
  * Created by RiverCode on 2017/3/6.
  */
object SparkSQLExample {
  def main(args: Array[String]) {

    val sparkConf = new SparkConf().setMaster("local").setAppName("spark SQL basic example")

    val sc = new SparkContext(sparkConf)

    val sqlContext = new SQLContext(sc)

    val df = new SQLContext(sc).read.json("E:\\spark-2.1.0\\spark-2.1.0\\examples\\src\\main\\resources\\people.json")

    df.show()

    df.printSchema()

    df.select("name").show()

    df.select("name","age").show() // 可以
//  df.select("name","age"+1).show() // 不可以cannot resolve 'age1' given input columns age, name;
//  df.select($"name",$"age"+1)  // spark 2.1.0 这样写
    df.select(df("name"),df("age")+1).show()  // spark 1.6.3

    df.filter(df("age")>21).show()

    df.groupBy("age").count().show()
   
  }
}

8.相关文章链接

Spark中DataFrame的schema讲解:spark中DataFrame的schema讲解

http://blog.youkuaiyun.com/rivercode/article/details/60604327

spark创建DataFrame:spark创建DataFrame

http://blog.youkuaiyun.com/rivercode/article/details/60596079









5、OpenClaw(龙虾助手)飞书机器人完整对接指南(2026最新版) OpenClaw v2026.2.2+ 版本,防火墙内也能正常工作,是目前最稳定、最简单的企业内部AI助手部署方案。 阅读详情

相关推荐

激光雷达-IMU标定工具lidar_imu_calib保姆级教程(VLP-16实测)

本文提供激光雷达与IMU联合标定的详细实战教程,重点解析lidar_imu_calib工具在VLP-16上的应用。从环境部署、数据采集技巧到参数配置与结果验证,手把手指导完成标定全流程,并详解如何在LIO-SAM等SLAM系统中应用标定结果,确保传感器融合精度。

food6的博客 475

Spark SQL/DataFrame/DataSet操作(三)-----分组聚合groupBy

分组函数groupBy (1)分组计数 select address,count(1) from people group by address;  等价的算子如下 scala> peopleDF.show() +--------+---+--------+ | name|age| address| +--------+---+--------+ |zhangsan| 22| ...

微步的博客 1万+

TypeScript的安装与使用

TypeScript的安装与使用

qq_51589308的博客 600

SQL FILTER 关键字的应用

SELECT count(1) FILTER (WHERE flag_xiaofang = 1) AS xiaofang, count(1) FILTER (WHERE flag_weihua = 1) AS weihua, count(1) FILTER (WHERE flag_huanbao = 1) AS huanbao, count(1) FILTER (WHERE flag_sanchangsuo = 1) AS sancha

weixin_47467938的博客 1644

CV领域交叉注意力机制:QKV在图像特征增强中的核心作用解析

本文深入解析了CV领域中交叉注意力机制的核心组件QKV在图像特征增强中的关键作用。通过通俗类比和实战案例,阐述了Q(查询)、K(键)、V(值)如何协同实现动态权重分配,从而在目标检测、图像分割与生成等任务中显著提升模型性能与语义对齐能力。

weixin_29194817的博客 438

Linux-RGMII PHY 88E1512 驱动调试记录

1. 简介 1)开发板平台:创龙 AM5728 (tl5728-easy-evm) 2)PHY芯片:Marvell 88E1512 88E1512和88E1510都是一个系列的phy,采用marvell的通用phy驱动,驱动源码路径如下:drivers/net/phy/marvell.c 2. 应用场景 1)系统框图 AM5728连接两个PHY,PHY0的工作模式是 RGMII to Copper (RGMII到电口),PHY1的工作模式是 RGMII to SGMII。 两个PHY与处理器的连接方式都是

weixin_40407893的博客 2万+

pyspark数据处理之----全量查询select和条件查询filter

在spark中,对数据的查询和数据库是有点对其的,有条件查询也有全量查询 头文件导入和测试数据创建 具体如何创建原始数据,请看上一篇博客(dataframe的8种创建方法) from pyspark.sql import SparkSession spark = SparkSession.builder.appName('increase delete change select').master('local').getOrCreate() df = spark.createDataFrame([

traveler-leon的博客 1万+

单目视觉定位:深入解析PNP算法在机器人导航中的实战应用

本文深入解析了PNP算法在机器人单目视觉定位中的核心原理与实战应用。通过拆解坐标变换四步,详细阐述了如何从二维图像点反求相机三维位姿。文章结合OpenCV的solvePnP函数,提供了算法选择、参数调优及结果后处理的实用指南,并针对机器人导航中的特征匹配、尺度不确定性等挑战,给出了鲁棒性优化与实时性平衡的解决方案。

weixin_29083649的博客 419

Spark---DataFrame学习(二)——select、selectExpr函数

select:处理列或表达式 selectExor:处理字符串表达式 数据集格式如下: 有三个字段,目的国家、出发国家、count 一.select 从df中选择列的方式, 1.DataFrame.select(“列名”),参数是列名的字符串格式。想要选出多列,可以用相同方式添加更多列名 小技巧:传入"*"选择所有列。 2.通过函数选择列 这些函数有DataFrame.col(“列名”)、col(“列名”)、column(“列名”)、expr(“列名”);以及两种scala特有的语言支持,$“列名

stan1111的博客 3万+

CUDA-GDB(11)——调试示例演练

本博客包含三个CUDA-GDB的演练示例: ​​​​▶ Example: bitreverse ▶ Example: autostep ▶ Example: MPI CUDA Application

AI-安全-功耗 1512

TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate

这篇被 ICLR 2026 接收的论文提出了一种名为TurboQuant的全新在线向量量化(Vector Quantization, VQ)算法。该研究的核心目标是解决大语言模型(LLM)在长上下文推理时面临的 KV Cache 显存消耗瓶颈,以及大规模向量数据库在近似最近邻检索中的存储与延迟问题。有别于现有技术,TurboQuant 是一种无需任何校准数据、无需训练的在线算法(Data-oblivious)。

c_cpp_csharp的专栏 118

JS学习六:监听v-on

<div id="app"> <button v-on:click="test">语法糖</button> <button @click="test">语法糖</button>//@click是v-on:click的简写 </div> <script src="../js/vue.js"></script> <script> const app = new Vue({ el:"#app",

weixin_43844071的博客 260

Tableau学习教程(万字保姆级教程)​​​​​​

​Tableau学习教程(保姆级教材,学不会私信留言来找我) 从BI系统开发的角度来学习tableau工具,更学会报表开发的流程 内含学习使用数据源,tableau打包工作簿,可直接提取使用 ​...

小菜菜的博客 6万+

spark2.1:使用df.select(when(a===b,1).otherwise(0))替换(case when a==b then 1 else 0 end)

最近工作中把一些sql.sh脚本执行hive的语句升级为spark2.1版本,其中遇到将case when 替换为scala操作df的方式实现的问题: 代码数据: scala&gt; import org.apache.spark.sql.functions._ import org.apache.spark.sql.functions._ scala&gt; im...

weixin_34234823的博客 1196

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SQL 聚合函数中的数据过滤

本文介绍了如何在 SQL 聚合函数中进行数据过滤,基于满足特定条件的部分数据进行汇总。方法包括在聚合函数中使用 CASE 表达式对数据进行转换,以及 PostgreSQL 对聚合函数的 FILTER 扩展选项两种方法。本文描述的方法支持但不限于 Oracle、MySQL/MariaDB、Microsoft SQL Server、PostgreSQL 以及 SQLite 等数据库。

Tony.Dong的专栏 5658

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SQL必需掌握的100个重要知识点:过滤数据

4.1 使用 WHERE 子句 数据库表一般包含大量的数据,很少需要检索表中的所有行。通常只会 根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指 定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)。 在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。 WHERE 子句在表名( FROM 子句)之后给出,如下所示: 输入▼ SELECT prod_name, prod_price FROM Products WHE

Lee达森的博客 1252

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spark SQL基本操作以及函数的使用

引语:   本篇博客主要介绍了Spark SQL中的filter过滤数据、去重、集合等基本操作,以及一些常用日期函数,随机函数,字符串操作等函数的使用,并列编写了示例代码,同时还给出了代码当中用到的一些数据,放在最文章最后。 SparkSQL简介   Spark SQL是Spark生态系统中非常重要的组件,其前身为Shark。Shark是Spark上的数据仓库,最初设计成与Hive兼容,但是该项目...

一个人的编程之路 2742

Spark SQL中DataFrame的常用操作

DataFrame提供了两种语法风格,即DSL语法和SQL语法风格,两者在功能上并无区别,仅仅是根据用户习惯。 1、DSL风格操作 (1)show():查看DataFrame中的具体内容信息。 (2)printSchema():查看DataFrame的Schema信息。 (3)select():查看DataFrame中选取部分列的数据。 例:查询name字段的数据用personDF.select(“name”).show代码直接查询。 例:对列名进行重命名。 例:使用filter(..

m0_59839948的博客 1319

SQL 查询统计之条件表达式(Conditional Expressions)

PostgreSql 当发现可以进行筛选时,语句如下: SELECT count(*) filter (where PERIOD = '01') AS business_daily, -- 日累计 业务办理 count(*) filter (where PERIOD = '02') AS business_per_month -- 月累计 业务办理 FROM `k_id_idx` as ki WHERE idx_code = 'GD010' Mysql count filter 语句并不能使用在

howeres的博客 9474

终于有人讲明白SQL中Filter与Where子句的差别了

小样本:二者皆可大样本:Filter 灵活性高,适合一次性计算多列;只计算单列的话使用Where。

实践出真知 1027

spark中filter函数的一个用法

spark中filter函数的一个用法

Mr Zhu's little cute 3930

很棒的PostgreSQL 9.4 / SQL:2003 FILTER子句,用于聚合函数

有时,当使用SQL聚合数据时,我们很乐意添加一些其他过滤器。 例如,考虑以下世界银行数据: 人均GDP(现价美元) 2009 2010 2011 2012 CA 40,764 47,465 51,791 52,409 DE 40,270 40,408 44,355 42,598 FR 40,488 39,448 42...

danpu0978的博客 453

Spark SQL/DataFrame/DataSet操作(二)-----算子filter和sort

一、过滤算子filter(filter等价于where算子) DF.col("id")等价于$"id",取列ColumnName DF.filter("name=''")    过滤name等于空的行 DF.filter($"age" &gt; 21).show()     过滤age大于21的行,必须增加语句:import spark.implicits._,否则$表达式会报错 DF.f...

微步的博客 8494

【SQL】COUNT... FILTER 的适用场景

COUNT(*) FILTER (WHERE …) 通过语法精简与执行优化,显著提升了条件统计的效率与可维护性。尤其在 PostgreSQL 和 Spark 生态中,是多维分析的推荐实践,对于需兼容传统数据库的场景,可通过 CASE WHEN 平稳过渡即可。

用最通俗的语言,讲述对技术的理解。 1637

Pyspark 读 DataFrame 的使用与基本操作

一、安装 基于 mac 操作系统 安装 jdk jdk 下载地址 安装 pyspark pip install pyspark 二、基本操作 2.1 建立SparkSession对象 一切操作之前需要先建立一个SparkSession对象(运行Spark code的Entrance point,可以理解为交互部件): 详见: pyspark.sql module from pyspark.sql import SparkSession spark = SparkSession.builder.ma

weixin_41888257的博客 1万+

RDD、DataFrame和DataSet的区别

参考文章:RDD、DataFrame和DataSet的区别 SparkSQL_Dataset和DataFrame简介 一、Spark SQL简介 Spark SQL 是 Spark 中的一个子模块,主要用于操作结构化数据。它具有以下特点: 能够将 SQL 查询与 Spark 程序无缝混合,允许您使用 SQL 或 DataFrame API 对结构化数据进行查询; 支持多种开发语言; 支持多达上百种的外部数据源,包括 Hive,Avro,Parquet,ORC,JSON 和 JDBC 等; 支持

justlpf的专栏 5672
上一篇: Spark中DataFrame的schema讲解
下一篇: spark算子join讲解
RiverCode
博客等级 码龄10年 39粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值