![](/img/trans.png)
[英]How to construct a column based on other columns using dataframe in Spark Java?
[英]How to construct a new column based on listwString> in java
我有一个 List list =["a","b","c"] 并且我必须向我的数据框中添加一个新列,但首先我必须构造它并且该列必须是这样的:
x|y|z| 列表
我列表中的字符串是列,我的意思是我必须构建我的请求,如:
SELECT x,y,z, list FROM Dataframe
我尝试将列表中的字符串拆分为
String.join("," , list)
但它看起来像一个单列而不是多列
Dataset<Row> df= dataframe.withColumn("NewColumn", concat(dataframe.col("x"), lit("|"), dataframe.col("y"),lit("|"), String.join(","list));
注 1 :我的列表的大小是可编辑的,列也是可编辑的注 2 :我必须在我的函数 withColumn 中调用 String.join(","list),我没有选择
预期结果是一个数据框:
------------------------------------------------------------
x y z a b c **NewColumn**
------------------------------------------------------------
val1 val2 val3 val4 val5 val6 val1|val2|val3|val4|val5|val6
-------------------------------------------------------------
我看不到如何构建我的新专栏,谢谢您的帮助
函数concat
将采用org.apache.spark.sql.Column
类型的参数,但您传递的是String
类型的列表。
您必须将String
列表转换为Column
类型列表并将这些值传递给concat
def concat(exprs: org.apache.spark.sql.Column*): org.apache.spark.sql.Column
下面的代码在scala中,您可以将其转换为java。
val list = List("a","b","c")
dataframe.withColumn(
"NewColumn",
concat(
col("x"),
lit("|"),
col("y"),
lit("|"),
list.map(c => col(c)):_* // I have added this, You may need to convert your list of strings into list of columns, It will work.
)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.