Spark(JAVA)中联接操作后的架构顺序更改

Spark(JAVA)中联接操作后的架构顺序更改,java,join,apache-spark,multiple-columns,Java,Join,Apache Spark,Multiple Columns,我在Java中使用Spark,当我在两个数据帧之间进行连接时,模式的顺序在结果中是不同的 我需要保留顺序,因为我想在之后将数据插入HBase表 在Scala中有一个使用seq列表的解决方案,我想知道如何使用Java实现这一点?我找到的解决方案是创建一个列数组(来自org.apache.spark.sql.Column)。希望在执行select时,它会保留数组顺序。因为我从未在其他地方找到过这个解决方案,所以我决定将它发布在这里 //after making a join into my DF c

我在Java中使用Spark,当我在两个数据帧之间进行连接时,模式的顺序在结果中是不同的

我需要保留顺序,因为我想在之后将数据插入HBase表


在Scala中有一个使用seq列表的解决方案,我想知道如何使用Java实现这一点?

我找到的解决方案是创建一个列数组(来自org.apache.spark.sql.Column)。希望在执行select时,它会保留数组顺序。因为我从未在其他地方找到过这个解决方案,所以我决定将它发布在这里

//after making a join into my DF called "joinedDF" I do this:
//example of schema from string
String schemaFull= "id_meta;source_name_meta;base_name_meta;..."; 
String[] strColumns = schemaFull.split(";");
org.apache.spark.sql.Column[] selectedCols = new org.apache.spark.sql.Column[strColumns.length];
for (int i=0; i < strColumns.length; i++){
    selectedCols[i] = col(strColumns[i]);
}           
joinedDF = joinedDF.select(selectedCols);
//在连接到名为“joinedDF”的DF后,我执行以下操作:
//来自字符串的模式示例
String schemaFull=“id\u meta;source\u name\u meta;base\u name\u meta;…”;
字符串[]strColumns=schemaFull.split(“;”);
org.apache.spark.sql.Column[]selectedCols=new org.apache.spark.sql.Column[strColumns.length];
for(int i=0;i
您还可以使用以下方法在Java中创建Scala Seq:

import scala.collection.JavaConversions;
import scala.collection.Seq;
import static java.util.Arrays.asList;

Seq<String> seq = JavaConversions.asScalaBuffer(asList("col_1","col_2"));
导入scala.collection.JavaConversions;
导入scala.collection.Seq;
导入静态java.util.Arrays.asList;
Seq-Seq=JavaConversions.asScalaBuffer(asList(“col_1”、“col_2”);