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("%")))
所以我有给定的数据框:
+--------------------+-------------+
| 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("%")))