Spark 使用 withColumn() 连接字符串

Spark concatenating strings using withColumn()

所以我有给定的数据框:

+--------------------+-------------+
|           entity_id|        state|
+--------------------+-------------+
|             ha_tdeg|         39.9|
|         memory_free|       1459.4|
|            srv_tdeg|         39.0|
|       as_tempera...|          9.5|
|         as_humidity|        81.71|
|         as_pressure|      1003.35|
|      as_am_humidity|        22.16|
|      as_pm_humidity|         4.64|
|         memory_free|       1460.0|
|             ha_tdeg|         38.0|
|         memory_free|       1459.3|
+--------------------+-------------+

我正在尝试为“entity_id”包含 'humidity' 的每个“状态”添加百分号。 因此,正如在下面的代码中看到的那样,我在使用它之前将“state”列设置为“String”。 但是每当我执行下面的命令并尝试连接“%”(或任何其他字符串)时,所有值都会变为“null”。 对我来说有趣的是,如果我尝试连接一个包装为字符串 ("10") 的数字,它会执行数学加法。

解决这个问题的方法是什么?

这是我使用的代码:

var humidityDF = df.filter(forExport("entity_id").contains("humidity") && df("state").isNotNull)
humidityDF = humidityDF.withColumn("state", humidityDF("state").cast("String"))
humidityDF = humidityDF.withColumn("state", col("state") + "%")

我试过了:

humidityDF = humidityDF.withColumn("state", col("state").toString + "%")

但这不起作用,因为 'withColumn' 只接受 Column 类型参数。

import org.apache.spark.sql.functions.{lit, concat}
humidityDF = humidityDF.withColumn("state", concat(col("state"),lit("%")))