我在火花中有一个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
。那么,我该怎么做?提前谢谢。
答案 0 :(得分:2)
您可以使用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|
+---+-------+----------+
答案 1 :(得分:1)
其他方法是在数据帧
上编写一个UDF(用户定义函数)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|
+---+-------+---------+