该行:

df.withColumn("test", expr("concat(lon, lat)"))

可以正常工作,但是
df.withColumn("test", expr("concat(lon, lit(','), lat)"))

产生以下异常:



为什么?解决方法是什么?

最佳答案

expr 的字符串参数将被解析为SQL表达式,并用于构造列。由于 lit 不是有效的SQL命令,这将给您一个错误。 (Spark中使用lit将文字值转换为新列。)

要解决此问题,只需删除lit部分:

df.withColumn("test", expr("concat(lon, ',', lat)"))

或者直接使用内置的Spark concat 函数而不使用expr:
df.withColumn("test", concat($"lon", lit(","), $"lat"))

由于concat将列作为参数,因此必须在此处使用lit

关于scala - 在expr()中使用lit(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53200623/

10-09 09:11