2017-07-12 18 views
0

Java APIを使用して、ベクトルアセンブラの出力要素を別々の列として取得する必要があります。vectorassemblerの出力から要素を取得する

VectorAssembler assembler3 = new VectorAssembler() 
       .setInputCols(new String[]{"res1", "res2"}) 
       .setOutputCol("res3"); 

DataFrame output = assembler1.transform(sensordataDF); 

res1およびres2は両方とも二重配列ベクターである。誰も私にこのことを教えることができますか?

答えて

1

出力データフレームは、res3という新しい列のsensordataDFになりますが、res1とres2の列も持ちます。

編集:spark.sql.functions splitを使用して列を文字列にキャストしてから、分離している間にdoubletypeにキャストすることができます。

私は、Pythonで火花を使用しますが、Javaでほぼ同じ

例のようになります。

split_col = split(output['res3'], ',') 

df = ouput.withColumn('first_data', split_col.getItem(0)) 
df = df.withColumn('second_data', split_col.getItem(1)) 
+0

[OK]を、私は私の質問を編集しました。 – Luckylukee

+0

編集された答え。希望する場合は –

+0

各分割の長さが異なる可能性がありますので、上記のコードは機能しません – Luckylukee

関連する問題