Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何基于对象列表向dataframe添加列_Java_Dataframe_Apache Spark_Iterator - Fatal编程技术网

Java:如何基于对象列表向dataframe添加列

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

我必须将列添加到我的dataframe和columns=列表中,因此我必须迭代此对象列表:

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();
}

您可以从迭代器对象创建另一个数据帧,并与主数据帧连接。