首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从()函数中获取最后一个元素

从()函数中获取最后一个元素
EN

Stack Overflow用户
提问于 2017-01-26 06:51:12
回答 4查看 14.6K关注 0票数 8

我希望从()函数返回的Array中获得最后一个元素。

代码语言:javascript
运行
复制
split(4:3-2:3-5:4-6:4-5:2,'-')

我知道它能挺过去的

代码语言:javascript
运行
复制
split(4:3-2:3-5:4-6:4-5:2,'-')[4]

但是当我不知道数组的长度时,我想要另一种方法。请帮帮我。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-26 15:05:50

您可以使用UDF来完成这一任务,如下所示:

代码语言:javascript
运行
复制
val df = sc.parallelize(Seq((1L,"one-last1"), (2L,"two-last2"), (3L,"three-last3"))).toDF("key","Value")
+---+-----------+
|key|Value      |
+---+-----------+
|1  |one-last1  |
|2  |two-last2  |
|3  |three-last3|
+---+-----------+

val get_last = udf((xs: Seq[String]) => Try(xs.last).toOption)

val with_just_last = df.withColumn("Last" , get_last(split(col("Value"), "-")))
+---+-----------+--------+
|key|Value      |Last    |
+---+-----------+--------+
|1  |one-last1  |last1   |
|2  |two-last2  |last2   |
|3  |three-last3|last3   |
+---+-----------+--------+

请记住,可以将拆分的函数从SparkSQL应用到DataFrame的一个列。

票数 2
EN

Stack Overflow用户

发布于 2018-10-24 16:50:28

在拆分()之后,还可以在列上使用SparkSql反向()函数。例如:

SELECT reverse(split(MY_COLUMN,'-'))[0] FROM MY_TABLE

这里,[0]给出了反向数组的第一个元素,这是初始数组的最后一个元素。

票数 22
EN

Stack Overflow用户

发布于 2019-01-11 00:36:54

请检查索引,它应该完全按照您的要求工作:

代码语言:javascript
运行
复制
substring_index(lit("1-2-3-4"), "-", -1) // 4
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41868166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档