【Spark】DataFrame关于数据常用操作
DSL语法
概述
1.查看全表数据 —— DataFrame.show
2.查看部分字段数据(有4种方法)
(1) DataFrame.select("字段名称").show
(2) DataFrame.select($"字段名称").show(推荐)
(3) DataFrame.select(col("字段名称")).show
(4) DataFrame.select(DataFrame.col("字段名称")).show
如果要查询多个字段,方法一样,后面跟着添加字段即可
3.打印schema信息 —— DataFrame.printSchema
4.查询多个字段,并对其中一个字段的值做+1的操作 —— DataFrame.select($"字段名称1",$"字段名称2",$"字段名称2" + 1)
5.过滤,拿到想要的数据 —— DataFrame.filter(条件).show
6.数据分组并计数 —— DataFrame.groupBy("字段名称").count().show
实例操作
// 查询全表数据
scala> personDF.show
+---+--------+---+
| id| name|age|
+---+--------+---+
| 1|zhangsan| 20|
| 2| lisi| 29|
| 3| wangwu| 25|
| 4| zhaoliu| 30|
| 5| tianqi| 35|
| 6| kobe| 40|
+---+--------+---+
// 查询部分字段
// 方法一
scala> personDF.select(personDF.col("name")).show
+--------+
| name|
+--------+
|zhangsan|
| lisi|
| wangwu|
| zhaoliu|
| tianqi|
| kobe|
+--------+
//方法二
scala> personDF.select(col("name")).show
+--------+
| name|
+--------+
|zhangsan|
| lisi|
| wangwu|
| zhaoliu|
| tianqi|
| kobe|
+--------+
//方法三
scala> personDF.select($"name").show
+--------+
| name|
+--------+
|zhangsan|
| lisi|
| wangwu|
| zhaoliu|
| tianqi|
| kobe|
+--------+
//方法四
scala> personDF.select("name").show
+--------+
| name|
+--------+
|zhangsan|
| lisi|
| wangwu|
| zhaoliu|
| tianqi|
| kobe|
+--------+
// 打印schema信息
scala> personDF.printSchema
root
|-- id: integer (nullable = false)
|-- name: string (nullable = true)
|-- age: integer (nullable = false)
// 查询所有的name和age,并将age+1
scala> personDF.select($"name",$"age",$"age"+1).show
+--------+---+---------+
| name|age|(age + 1)|
+--------+---+---------+
|zhangsan| 20| 21|
| lisi| 29| 30|
| wangwu| 25| 26|
| zhaoliu| 30| 31|
| tianqi| 35| 36|
| kobe| 40| 41|
+--------+---+---------+
// 过滤age大于等于25的,使用filter方法过滤
scala> personDF.filter($"age" > 25).show
+---+-------+---+
| id| name|age|
+---+-------+---+
| 2| lisi| 29|
| 4|zhaoliu| 30|
| 5| tianqi| 35|
| 6| kobe| 40|
+---+-------+---+
// 按年龄进行分组并统计相同年龄的人数
scala> personDF.groupBy($"age").count.show
+---+-----+
|age|count|
+---+-----+
| 20| 1|
| 40| 1|
| 35| 1|
| 25| 1|
| 29| 1|
| 30| 1|
+---+-----+
SQL语法
概述
首先有一个必要的操作,就是把DataFrame注册成为一张table —— DataFrame.registerTmpTable("tbl_name")
然后用该格式填入sql语句即可 —— spark.sql("sql语句").show
实例操作
// 注册临时表
scala> personDF.registerTempTable("person")
warning: there was one deprecation warning; re-run with -deprecation for details
// 全表查询
scala> spark.sql("select * from person").show
+---+--------+---+
| id| name|age|
+---+--------+---+
| 1|zhangsan| 20|
| 2| lisi| 29|
| 3| wangwu| 25|
| 4| zhaoliu| 30|
| 5| tianqi| 35|
| 6| kobe| 40|
+---+--------+---+
// 以name和age分组,查询年龄大于25岁的数据
scala> spark.sql("select name,age from person where age > 25 group by name,age").show
+-------+---+
| name|age|
+-------+---+
| lisi| 29|
| kobe| 40|
|zhaoliu| 30|
| tianqi| 35|
+-------+---+
【Spark】DataFrame关于数据常用操作的更多相关文章
- python大规模数据处理技巧之一:数据常用操作
面对读取上G的数据,python不能像做简单代码验证那样随意,必须考虑到相应的代码的实现形式将对效率的影响.如下所示,对pandas对象的行计数实现方式不同,运行的效率差别非常大.虽然时间看起来都微不 ...
- Spark中RDD的常用操作(Python)
弹性分布式数据集(RDD) Spark是以RDD概念为中心运行的.RDD是一个容错的.可以被并行操作的元素集合.创建一个RDD有两个方法:在你的驱动程序中并行化一个已经存在的集合:从外部存储系统中引用 ...
- Excel数据常用操作,vlookup,text,trim,数据格式导致出错
数据有缺漏,需要在数据前面补零 =TEXT(F70,"000000") 前面是要操作的数据,后面是补几位 匹配数据(将一个表格中的数据进行匹配) =VLOOKUP(C2,aaa,4 ...
- Oracle数据常用操作
将用逗号隔开字段拆分成两行: select * from mp_fs_file_info a,dm_process_upload b where instr(b.attachment,a.file_i ...
- Json数据常用操作
JSON字符串: var str1 = '{ "name": "cs", "sex": "man" }'; JSON对象 ...
- 大数据学习day25------spark08-----1. 读取数据库的形式创建DataFrame 2. Parquet格式的数据源 3. Orc格式的数据源 4.spark_sql整合hive 5.在IDEA中编写spark程序(用来操作hive) 6. SQL风格和DSL风格以及RDD的形式计算连续登陆三天的用户
1. 读取数据库的形式创建DataFrame DataFrameFromJDBC object DataFrameFromJDBC { def main(args: Array[String]): U ...
- spark dataframe操作集锦(提取前几行,合并,入库等)
https://blog.csdn.net/sparkexpert/article/details/51042970 spark dataframe派生于RDD类,但是提供了非常强大的数据操作功能.当 ...
- spark 学习_rdd常用操作
[spark API 函数讲解 详细 ]https://www.iteblog.com/archives/1399#reduceByKey [重要API接口,全面 ] http://spark.apa ...
- spark DataFrame 常见操作
spark dataframe派生于RDD类,但是提供了非常强大的数据操作功能.当然主要对类SQL的支持. 在实际工作中会遇到这样的情况,主要是会进行两个数据集的筛选.合并,重新入库. 首先加载数据集 ...
随机推荐
- 21-Java-Hibernate框架(一)
一.Hibernate了解 Hibernate框架是Java持久层的框架,是Gavin King发明的,2001年发布的,JBoss公司的产品,2003年进入市场. Hibernate是基于对象来操作 ...
- 【three.js第四课】自定义材料、贴图。
1.先去下载6张不同的图片素材放到项目中. 2.在[three.js第三课]的代码基础上添加自定义的材料 //自定义材料 cubeMaterial 数组 //map:用于加载图片,THREE.Text ...
- mvc传递json数据到view简单实例
基于extjs4.2 controller //存储数据的类 public class DataLink { public string Name { get; set; } public strin ...
- Linux服务器压力测试总结(CPU、Memory、IO等)
测试工具:sysbench.memtester.htop 1.htop安装使用 yum install ncurses-devel # 安装依赖包 tar zxvf htop-2.2.0.tar.gz ...
- CTFHub web技能树之RCE初步 命令注入+过滤cat
在一个大佬的突然丢了个题过来,于是去玩了玩rce的两道题 大佬的博客跳转链接在此->>>大佬召唤机 叫 命令注入 一上来就是源码出现,上面有个ping的地方 <?php $re ...
- Spring Boot将Mybatis返回结果转为驼峰的三种实现方式
本文不再更新,可能存在内容过时的情况,实时更新请访问原地址:Spring Boot将Mybatis返回结果转为驼峰的三种实现方式: 我们通常获取Mybatis返回的数据结果时想要将字段以驼峰的形式返回 ...
- Springboot:定时任务处理(十三)
构建一个定时任务的service接口及实现(模拟) 接口:com\applesnt\springboot\service\TaskService.java package com.applesnt.s ...
- 磁盘性能测试工具之fio
fio是测试磁盘性能的一个非常好的工具,用来对硬件进行压力测试和验证. 注意事项 CentOS 6.5等较老版本的操作系统用fdisk创建分区时,默认为非4KB对齐选择初始磁柱编号,对性能有较大的影响 ...
- Mysql基础练习--实例
修改字段名:alter table 表名 change 旧字段名 新字段名 新数据类型;--- 主键 ------------------------------------------------- ...
- ACNet: 特别的想法,腾讯提出结合注意力卷积的二叉神经树进行细粒度分类 | CVPR 2020
论文提出了结合注意力卷积的二叉神经树进行弱监督的细粒度分类,在树结构的边上结合了注意力卷积操作,在每个节点使用路由函数来定义从根节点到叶子节点的计算路径,结合所有叶子节点的预测值进行最终的预测,论文的 ...