sql語法
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|+--
-+----
-+
首先有乙個必要的操作,就是把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中的join型別
spark dataframe中join與sql很像,都有inner join,left join,right join,full join 那麼join方法如何實現不同的join型別呢?看其原型 def join right dataframe,usingcolumns seq string jo...
spark dataframe筆記(鏈結彙總)
spark dataframe筆記 dataframe行轉列 spark dataframe筆記 對dataframe一列值保留4位小數 spark dataframe筆記 按照dataframe某一列的數值排序,並增加一列索引 2 降序排 spark dataframe筆記 按照dataframe...
Spark DataFrame建立及使用
dataframe的使用 1.通過sparksession構建dataframe 1 讀取文字檔案 val persondf2 spark.read.text file export servers person.txt 2 讀取json檔案建立dataframe val jsondf spark....