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