从其他2列中添加SPARK数据集中的列



我在火花中有一个 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|
+---+-------+---------+

相关内容

  • 没有找到相关文章

最新更新