Java:如何基于对象列表向dataframe添加列
我必须将列添加到我的dataframe和columns=列表中,因此我必须迭代此对象列表:Java:如何基于对象列表向dataframe添加列,java,dataframe,apache-spark,iterator,Java,Dataframe,Apache Spark,Iterator,我必须将列添加到我的dataframe和columns=列表中,因此我必须迭代此对象列表: columns=[ {val1="A",val2="num1"}, {val1="B",val2="num2"}, {val1="C",val2="num3"}, {val1="D",val2="num4"} ] mydataframe |no
columns=[
{val1="A",val2="num1"},
{val1="B",val2="num2"},
{val1="C",val2="num3"},
{val1="D",val2="num4"}
]
mydataframe
|nom |prenom | age |
|arnauld | simpson | 43 |
预期结果为:
|nom |prenom | age | A | B | C | D |
|arnauld | simpson | 43 |num1 |num2|num3|num4|
我尝试的是:
Iterator<Myclass> iterator = cols.iterator();
Dataset<Row> result=myDf;
while (iterator.hasNext()) {
Myclass res = iterator.next();
String val1= res.getVal1();
String val2= res.getVal2();
result = myDf.withColumn(val1, expr(val2));
result.show();
}
Iterator Iterator=cols.Iterator();
数据集结果=myDf;
while(iterator.hasNext()){
Myclass res=iterator.next();
字符串val1=res.getVal1();
字符串val2=res.getVal2();
结果=myDf.带列(val1,表达式(val2));
result.show();
}
但是我没有预期的结果,我只有最后一个对象(val1=“D”,val2=“num4”)。
我怎样才能获得预期的结果呢?
result=myDf.withColumn(val1,expr(val2))代码>
应该是
result=result.withColumn(val1,expr(val2))代码>
否则,您将在每次迭代中丢弃结果
Iterator<Myclass> iterator = cols.iterator();
Dataset<Row> result=myDf;
while (iterator.hasNext()) {
Myclass res = iterator.next();
String val1= res.getVal1();
String val2= res.getVal2();
result = result.withColumn(val1, expr(val2));
result.show();
}
Iterator Iterator=cols.Iterator();
数据集结果=myDf;
while(iterator.hasNext()){
Myclass res=iterator.next();
字符串val1=res.getVal1();
字符串val2=res.getVal2();
结果=带有列(val1,expr(val2))的结果;
result.show();
}
您可以从迭代器对象创建另一个数据帧,并与主数据帧连接。