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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM