【Spark】DataFrame关于数据常用操作

601-赵同学

发表文章数:191

热门标签

, , , ,
首页 » 大数据 » 正文


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|
+-------+---+

未经允许不得转载:作者:601-赵同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《【Spark】DataFrame关于数据常用操作》 发布于2020-04-13

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录