开发者社区> 问答> 正文

根据spark scala中数据框中的列拆分获取长度

社区小助手 2018-12-06 11:59:49 560

有一个包含文本的“备注”列的数据框。我想通过检查备注列长度来添加新列。例如,如果备注列的长度== 2,我需要拆分($“备注”,“”)(1)。否则我会把备注栏视为原样。

例如:remarks =“xxxx yyyy”,我希望count应该是2,如果是这种情况,我需要将yyyy作为我们正在添加的新列中的值。

这是我尝试过的代码,但没有得到预期的结果。

val df1 = df.withColumn("remarks1",when(length(split(col($"remarks")," ") === 2),col($"remarks").split(" ")(1)).otherwise(col($"remarks")))
使用上面的代码,我收到错误:

线程“main”中的异常org.apache.spark.sql.AnalysisException:remarks由于数据类型不匹配,无法解析'(split(,'')= 2)':'(split(remarks,'')= 2)中的不同类型'(array和int)。;; '项目[备注#33,dv#37,dp#42,dv1#48,sig#55,en#63,es#72,案例时长度((拆分(备注#33,)= 2))然后拆分(备注#33,)[1] ELSE cefversion#33 END AS备注1#107]

分布式计算 Scala Spark
分享到
取消 提交回答
全部回答(1)
  • 社区小助手
    2019-07-17 23:18:30

    缩小问题的范围,这是正确的方法:

    val df1 = df.withColumn("remarks1", when(size(split($"remarks" ," ")) === 2,split($"remarks"," ")(1)).otherwise(col("remarks")))

    0 0
+ 订阅

大数据计算实践乐园,近距离学习前沿技术

推荐文章
相似问题
推荐课程