【问题标题】:how handle different type in column with dataframe如何使用数据框处理列中的不同类型
【发布时间】:2018-01-27 23:44:31
【问题描述】:

我有一张如下表,

+----------+-----+
|       tmp|index|
+----------+-----+
| [user1,0]|    0|
| [user1,3]|    1|
|[user1,15]|    2|

我想将 tmp 列拆分为拖列。 tmp 为 String 类型,index 为 Int。

我写的udf如下。

val getUser_id = udf( ( s : (String, Int)) => {
  s._1
})
newSession.withColumn( "user_id", getUser_id($"tmp"))

结果是:

执行用户定义函数失败(anonfun$4: (struct) => string)

你愿意帮帮我吗?

【问题讨论】:

    标签: scala apache-spark


    【解决方案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"))
    

    【讨论】:

      猜你喜欢
      • 2020-12-08
      • 1970-01-01
      • 2019-05-04
      • 2016-01-01
      • 2019-07-19
      • 2017-06-04
      • 2022-09-23
      • 2020-12-04
      • 2010-10-07
      相关资源
      最近更新 更多