2017-05-24 5 views
1

Spark Datasetで変数の順序を保持する方法はありますか?

Dataset<myBeanClass> resultDataset = myDataset.map(new MapFunction<myBeanClass,myBeanClass>() { 
    @Override 
    public myBeanClass call(myBeanClass v1) throws Exception { 

     // some code 
     return v1; 
    } 

}, Encoders.bean(myBeanClass.class)); 

スキーマは

なっ

私はこの時点で

Dataset<myBeanClass> myDataset = myDataFrame.as(Encoders.bean(myBeanClass.class)); 

としてスパークのデータセットを作成しています、そのスキーマがマップ変換を実行した後

root 
|-- name: string (nullable = true) 
|-- age: string (nullable = true) 
|-- gender: string (nullable = true) 

、のように見えます

root 
|-- age: string (nullable = true) 
|-- gender: string (nullable = true) 
|-- name: string (nullable = true) 

thisの例でも同様の動作が確認されています。注文を保持する方法はありますか?

答えて

0

スキーマ内の変数の順序を変更しないようにする方法を見つけられませんでした。しかし、私はそれを私が望む順序に戻すことができました。ここで私はそれをどうやったのか、

DataFrame resultsDataFrame = myDataset.toDF().selectExpr(myDataFrame.schema().fieldNames()); 

resultsDataFrameのスキーマは、私が

root 
|-- name: string (nullable = true) 
|-- age: string (nullable = true) 
|-- gender: string (nullable = true) 
からデータセットを作成したデータフレームのスキーマと同じです
関連する問題