我正在尝试创建java spark程序,并尝试使用添加新列
qdf.withColumn("newColumn", functions.lit("newCOlumn_val"))
当我尝试使用进行选择时
qdf.withColumn("newColumn", functions.lit("newColumn_val")).select(qdf.col("xyz"),qdf.col("newColumn")).show();
它的说法是无法重新命名列名newColumn。有人能帮我在Java中如何做到这一点吗?
qdf是添加newColumn
之前的数据帧,这就是为什么无法使用qdf.col("newColumn")
选择它的原因。
要处理它,您可以使用functions.col("newColumn")
,例如
qdf.withColumn("newColumn", functions.lit("newColumn_val"))
.select(functions.col("xyz"),functions.col("newColumn"))
.show();
或者,您可以在调用withColumn
后存储数据帧,然后它应该可以访问,例如
final var qdf2 = qdf.withColumn("newColumn", functions.lit("newColumn_val"));
qdf2.select(qdf2.col("xyz"), qdf2.col("newColumn")).show();
或者你可以像斯里尼瓦斯的回答一样使用原始字符串。
请尝试以下代码。
qdf.withColumn("newColumn", functions.lit("newColumn_val"))
.select("xyz","newColumn")
.show();
实际上根本不需要使用withColumn。(事实上,与直接使用select相比,它的性能打击非常小。(只需在select语句中引用lit
即可。
qdf.select(
qdf.col("xyz"),
functions.lit("newColumn_val").alias("new Column")
).show();