如何使用Spark按id
分区在df
列中计算字符串的出现次数?
例如,在df
的"name"
列中查找值为"test"
的字符串。
在SQL中,可以这样写:
SELECT
SUM(CASE WHEN name = 'test' THEN 1 else 0 END) over window AS cnt_test
FROM
mytable
WINDOW window AS (PARTITION BY id)
我尝试使用 map( v => match { case "test" -> 1.. })
,还有一些类似的方法:
def getCount(df: DataFrame): DataFrame = {
val dfCnt = df.agg(
.withColumn("cnt_test",
count(col("name")==lit('test'))
)
这是一个昂贵的操作吗?如何最好地检查特定字符串的出现次数,然后执行相应的操作(求和、最大值、最小值等)?
谢谢。