найти максимальную длину строковых значений в строковом столбце искры dataframe? - PullRequest
0 голосов
/ 20 января 2020

Как я могу найти максимальную длину строки в столбце искровых данных? Я пробовал

 val maxLentgh: Int = df.agg(max(length(col(x.name))).first()

Я тоже пробовал это, но сомневаюсь, что это будет исполнение.

val  maxLength = df.select(colName).collect().map(_(0)).toList.map(x=>x.toString.length).max

1 Ответ

0 голосов
/ 20 января 2020

Вы можете использовать length , чтобы найти длину строки, а затем используйте rank , чтобы найти порядок и выровнять их в порядке des c, чтобы получить максимальную длину:

import org.apache.spark.sql.expressions.Window

val df = Seq(("abc"), ("abcdef")).toDF("str")    

val win=Window.orderBy(length(col("str")).desc)

val finalDf = df
.withColumn("len", length(col("str")))
.withColumn("rank",  row_number().over(win))

finalDf.show()

Вывод:

+-------+---+----+
|    str|len|rank|
+-------+---+----+
| abcdef|  6|   1|
|    abc|  3|   2|
+-------+---+----+

, а затем:

val maxLen = finalDf.collect()(0)(1).asInstanceOf[Int]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...