2017-01-24 16 views
2

JavaでSparkを使用しています.2つのデータフレーム間で結合を行うと、スキーマの順序が異なります。Spark(JAVA)での結合操作後のスキーマ順序の変更

後でHBaseテーブルにデータを挿入したいので、注文を保存する必要があります。

ここでは、seqのリストを使用したソリューションがあります。私はJavaでこれを行う方法を知りましたか?

答えて

1

私が見つけた解決策は、(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); 
関連する問題