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

时间:2017-01-24 14:57:43

标签: java join apache-spark multiple-columns

我正在使用Spark with Java,当我在两个数据帧之间建立连接时,结果的顺序是不同的。

我需要保留订单,因为我想在。之后将数据插入HBase表。

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

2 个答案:

答案 0 :(得分:1)

我找到的解决方案是创建一个列数组(来自org.apache.spark.sql.Column)。希望当你进行选择时,它会保留数组顺序。由于我从未在其他地方找到过此解决方案,因此我决定将其发布在此处。

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

答案 1 :(得分:1)

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