【发布时间】:2017-06-09 10:31:12
【问题描述】:
我在 Java 中使用 Spark,当我在两个数据帧之间进行连接时,结果中架构的顺序不同。
我需要保留顺序,因为我想在之后将数据插入到 HBase 表中。
在 Scala 中有一个使用 seq 列表的解决方案,我想知道如何使用 Java 做到这一点?
【问题讨论】:
标签: java join apache-spark multiple-columns
我在 Java 中使用 Spark,当我在两个数据帧之间进行连接时,结果中架构的顺序不同。
我需要保留顺序,因为我想在之后将数据插入到 HBase 表中。
在 Scala 中有一个使用 seq 列表的解决方案,我想知道如何使用 Java 做到这一点?
【问题讨论】:
标签: java join apache-spark multiple-columns
您还可以使用以下方法在 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"));
【讨论】:
我找到的解决方案是创建一个列数组(来自 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);
【讨论】: