sparkjava如何使用withcolumn选择新添加的列



我正在尝试创建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();

最新更新