我有一张如下表格,
+----------+-----+
| tmp|index|
+----------+-----+
| [user1,0]| 0|
| [user1,3]| 1|
|[user1,15]| 2|
我想拆分tmp列来拖动列。 tmp是String类型,索引是Int。
我写下如下的udf。
val getUser_id = udf( ( s : (String, Int)) => {
s._1
})
newSession.withColumn( "user_id", getUser_id($"tmp"))
结果是:
无法执行用户定义的函数(anonfun $ 4:(struct< _1:string,_2:int>)=> string)
你想帮帮我吗?
答案 0 :(得分:1)
应该是Row
而不是Tuple
import org.apache.spark.sql.Row
val getUser_id = udf( ( s: Row) => {
s.getString(0)
})
或
val getUser_id = udf( ( s: Row) => {
val Row(id: String, _) = s
id
})
但是你应该select
:
newSession.withColumn( "user_id", getUser_id($"tmp._1"))