Spark DataFrame關於資料常用操作

2021-10-04 23:39:23 字數 4607 閱讀 9679

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