2016-11-16 5 views
0

多くの文書では、ケースクラスからデータフレームへの移行が可能であることが示されていますが、データフレームからケースクラスへの良い方法を見つけることができませんでした。データフレームをケースクラスにする方法は?

私は50列のデータフレームを持っていますが、約5列を選択して新しいテーブルにしたいとします。私はこの方法でそれに近づくことができます:

sqlContext.sql("select [1, 2, 3, 4, 5] from test").registerTempTable("newTable") 

しかしNEWTABLEは、カスタマイズされた値として、6、7のようないくつかの他の列を持つことになります(または今の0が、この列は単なるテストテーブルに存在しません)。 これを解決するために、私はこのように見える場合クラスを作成しようとした:最後に

case class newTable(1, 2, 3, 4, 5, 6, 7) 

を、Iは、テストテーブル、入力6、7から5を介してカラム1を抽出したいと思うものは何でも私が希望のが好き。私はこれを行う良い方法を見つけていません。

+0

あなたのケースクラスのフィールド名と列名と一致する必要があり、新しい列を追加するには – maasg

答えて

1

あなたはこのように使用することができます:

dataframe.select($"1".as("1"), $"2".as("2"), $"3".as("3"), $"4".as("4"), $"5".as("5")).as[newTable] 

注: あなたは私はあなたが必要とするすべては、選択した後 `withColumn`だと思う

+0

これを作成したケースクラスにどのように組み込みますか? – user3551523

+0

また、私はこれでエラーが発生しました: エラー:代替メソッドのオーバーロードされたメソッド値: (別名:シンボル)org.apache.spark.sql.DataFrame (別名:String)org.apache.spark。 sql.DataFrame あなたのケースクラスとあなたの名前列dosntが一致するので、 – user3551523

+0

型パラメータを取らない – HuntsMan

関連する問題