问题
I have some problem with the withColumn
function in Spark-Scala environment.
I would like to add a new Column in my DataFrame like that:
+---+----+---+
| A| B| C|
+---+----+---+
| 4|blah| 2|
| 2| | 3|
| 56| foo| 3|
|100|null| 5|
+---+----+---+
became:
+---+----+---+-----+
| A| B| C| D |
+---+----+---+-----+
| 4|blah| 2| 750|
| 2| | 3| 750|
| 56| foo| 3| 750|
|100|null| 5| 750|
+---+----+---+-----+
the column D in one value repeated N-time for each row in my DataFrame.
The code are this:
var totVehicles : Double = df_totVehicles(0).getDouble(0); //return 750
The variable totVehicles returns the correct value, it's works!
The second DataFrame has to calculate 2 fields (id_zipcode, n_vehicles), and add the third column (with the same value -750):
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
);
Finally, I add the new column with withColumn
function:
var df_nVehicles2 = df_nVehicles.withColumn(totVehicles, df_nVehicles("n_vehicles") + df_nVehicles("id_zipcode"))
But Spark returns me this error:
error: value withColumn is not a member of Unit
var df_nVehicles2 = df_nVehicles.withColumn(totVehicles, df_nVehicles("n_vehicles") + df_nVehicles("id_zipcode"))
Can you help me? Thank you very much!
回答1:
lit
function is for adding literal values as a column
import org.apache.spark.sql.functions._
df.withColumn("D", lit(750))
来源:https://stackoverflow.com/questions/38587609/spark-add-new-column-with-the-same-value-in-scala