我在火花中有一个 Dataset<Row>
,就像:
+----+-------+
| age| name|
+----+-------+
| 15|Michael|
| 30| Andy|
| 19| Justin|
+----+-------+
现在,我想添加一个具有age
的字符串值的列,以及name
的字符串值,例如:
+----+-------+-----------+
| age| name|cbdkey |
+----+-------+-----------+
| 15|Michael| 15Michael|
| 30| Andy| 30Andy |
| 19| Justin| 19Justin |
+----+-------+-----------+
我使用:
df.withColumn("cbdkey",col("age").+(col("name"))).show()
但是新列cbdkey
的所有值是null
。那么,我应该怎么做?预先感谢。
您可以使用concat
函数:
df.withColumn("cbdkey", concat(col("age"), col("name"))).show
+---+-------+---------+
|age| name| cbdkey|
+---+-------+---------+
| 15|Michael|15Michael|
| 30| Andy| 30Andy|
| 19| Justin| 19Justin|
+---+-------+---------+
如果您需要指定自定义分离器,请使用concat_ws
:
df.withColumn("cbdkey", concat_ws(",", col("age"), col("name"))).show
+---+-------+----------+
|age| name| cbdkey|
+---+-------+----------+
| 15|Michael|15,Michael|
| 30| Andy| 30,Andy|
| 19| Justin| 19,Justin|
+---+-------+----------+
其他方法是编写UDF(用户定义的函数)在dataframe
上调用此val concatUDF = udf {
(age: Int, name: String) => {
age + name
}
}
df.withColumn("cbdkey", concatUDF(col("age"), col("name"))).show()
输出:
+---+-------+---------+
|age| name| cbdkey|
+---+-------+---------+
| 15|Michael|15Michael|
| 30| Andy| 30Andy|
| 19| Justin| 19Justin|
+---+-------+---------+