2016-07-26 21 views
2

Spark-Scala環境でwithColumn関数に問題があります。 私はそのように私のDATAFRAMEに新しい列を追加したいと思います:Spark、Scalaで同じ値の新しい列を追加

+---+----+---+ 
| A| B| C| 
+---+----+---+ 
| 4|blah| 2| 
| 2| | 3| 
| 56| foo| 3| 
|100|null| 5| 
+---+----+---+ 

になった:

+---+----+---+-----+ 
| A| B| C| D | 
+---+----+---+-----+ 
| 4|blah| 2| 750| 
| 2| | 3| 750| 
| 56| foo| 3| 750| 
|100|null| 5| 750| 
+---+----+---+-----+ 

つの値の列Dは、私のデータフレームの行ごとにN回繰り返します。

コードは次のとおりです。変数totVehicles

var totVehicles : Double = df_totVehicles(0).getDouble(0); //return 750 

正しい値を返し、それが作品です!

第二のデータフレームは、2つのフィールド(id_zipcode、n_vehicles)を計算し、(同じ値-750で)3番目の列を追加しなければならない:

var df_nVehicles = 
df_carPark.filter(
     substring($"id_time",1,4) < 2013 
    ).groupBy(
     $"id_zipcode" 
    ).agg(
     sum($"n_vehicles") as 'n_vehicles 
    ).select(
     $"id_zipcode" as 'id_zipcode, 
     'n_vehicles 
    ).orderBy(
     'id_zipcode, 
     'n_vehicles 
    ); 

最後に、私は、withColumn機能を新しい列を追加します。

var df_nVehicles2 = df_nVehicles.withColumn(totVehicles, df_nVehicles("n_vehicles") + df_nVehicles("id_zipcode")) 

しかし、スパーク私は、このエラーを返します:

error: value withColumn is not a member of Unit 
     var df_nVehicles2 = df_nVehicles.withColumn(totVehicles, df_nVehicles("n_vehicles") + df_nVehicles("id_zipcode")) 

手伝って頂けますか? ありがとうございます!

答えて

10

​​3210関数列

import org.apache.spark.sql.functions._ 
df.withColumn("D", lit(750)) 
としてリテラル値を追加するためのものです
関連する問題