如何使用数据框

时间:2017-08-19 11:32:45

标签: scala apache-spark

我有一张如下表格,

+----------+-----+
|       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)

你想帮帮我吗?

1 个答案:

答案 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"))