该行:
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/