在 Spark 中加入操作后架构顺序发生变化 (JAVA)

Schema order change after join operation in Spark (JAVA)

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

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

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

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

//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);

您还可以使用以下方法在 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"));