不同條件剔除資料

2021-10-01 05:51:37 字數 1656 閱讀 1135

1,張三,23

2,李四,24

3,王五,25

4,趙六,26

5,田七,25

需求:

剔除年齡為25、姓名為張三的資料

object culltest 

logger.getlogger("org").setlevel(level.error)

val spark = sparksession

.builder

.master(master = "local[*]")

.getorcreate()

import spark.implicits._

import spark.sql

val df = spark.read.textfile(path = "./data/t2")

.map(_.split(","))

.map(x => (x(0), x(1), x(2)))

.todf("id", "name", "age")

df.cache()

df.createtempview(viewname = "view")

// 剔除年齡等於25以及名字為張三的使用者

val start_time1 = system.currenttimemillis()

sql(sqltext = "select * from view where age = 25 or name = '張三'")

.createtempview(viewname = "view1")

sql(sqltext = "select * from view where id not in (select id from view1)").show()

val end_time1 = system.currenttimemillis()

println("方法一耗時:" + (end_time1 - start_time1))

val start_time2 = system.currenttimemillis()

sql(sqltext = "select * from view")

.where("age != 25")

.where("name != '張三'")

.show()

val end_time2 = system.currenttimemillis()

println("方法二耗時:" + (end_time2 - start_time2))

spark.stop()

}}

+---+----+---+

| id|name|age|

+---+----+---+

| 2| 李四| 24|

| 4| 趙六| 26|

+---+----+---+

方法一耗時:856

+---+----+---+

| id|name|age|

+---+----+---+

| 2| 李四| 24|

| 4| 趙六| 26|

+---+----+---+

方法二耗時:216

方法一是不可取的,原因前面說過了;

方法二採用一步一步的剔除,這種效能顯然高於第一種。

遞減剔除陣列元素演算法

遞減剔除陣列元素演算法 演算法練習原題 飛彈攔截系統 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可...

MYSQL級聯條件刪除資料

有時候,刪除一張表的資料需要根據另外一張表資料為依據來刪除表中的資料。以下就以幾種方式來實現該功能。以下語句在mysql資料庫下驗證 第一種方式 delete ufi from user finger info ufi user info ui where ufi.userid ui.id and ...

按不同條件更新資料

update cdsia set inen where cuno and inen is null update cdsia set s where cuno and s is null update cdsia set bday where cuno and bday is null 以上是待合併...