Apache spark 在Spark数据集中的其他2列中添加一列
我在spark中有一个Apache spark 在Spark数据集中的其他2列中添加一列,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我在spark中有一个数据集,就像: +----+-------+ | age| name| +----+-------+ | 15|Michael| | 30| Andy| | 19| Justin| +----+-------+ 现在我想添加一个列,该列的值为字符串值age加上字符串值name,如下所示: +----+-------+-----------+ | age| name|cbdkey | +----+-------+-----------+ | 15
数据集
,就像:
+----+-------+
| 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\u 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|
+---+-------+----------+
您可以使用
concat
功能:
df.withColumn("cbdkey", concat(col("age"), col("name"))).show
+---+-------+---------+
|age| name| cbdkey|
+---+-------+---------+
| 15|Michael|15Michael|
| 30| Andy| 30Andy|
| 19| Justin| 19Justin|
+---+-------+---------+
如果需要指定自定义分隔符,请使用concat\u 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(用户定义函数)调用
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|
+---+-------+---------+
另一种方法是在数据帧上编写一个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|
+---+-------+---------+
谢谢你,你的答案有效。谢谢你,你的答案有效。这里不需要。Spark SQL支持这里不需要的
concat
和concat\u ws
。Spark SQL支持concat
和concat\u ws