往一个dataframe新增某个列是很常见的事情。
然而这个资料还是不多,很多都需要很多变换。而且一些字段可能还不太好添加。
不过由于这回需要增加的列非常简单,倒也没有必要再用UDF函数去修改列。
利用withColumn函数就能实现对dataframe中列的添加。但是由于withColumn这个函数中的第二个参数col必须为原有的某一列。所以默认先选择了个ID。
scala> val df = sqlContext.range(0, 10)
df: org.apache.spark.sql.DataFrame = [id: bigint]
scala> df.show()
+---+
| id|
+---+
| 0|
| 1|
| 2|
| 3|
| 4|
| 5|
| 6|
| 7|
| 8|
| 9|
+---+
scala> df.withColumn("bb",col(id)*0)
<console>:28: error: not found: value id
df.withColumn("bb",col(id)*0)
^
scala> df.withColumn("bb",col("id")*0)
res2: org.apache.spark.sql.DataFrame = [id: bigint, bb: bigint]
scala> df.show()
+---+
| id|
+---+
| 0|
| 1|
| 2|
| 3|
| 4|
| 5|
| 6|
| 7|
| 8|
| 9|
+---+
scala> res2.show()
+---+---+
| id| bb|
+---+---+
| 0| 0|
| 1| 0|
| 2| 0|
| 3| 0|
| 4| 0|
| 5| 0|
| 6| 0|
| 7| 0|
| 8| 0|
| 9| 0|
+---+---+
scala> res2.withColumn("cc",col("id")*0)
res5: org.apache.spark.sql.DataFrame = [id: bigint, bb: bigint, cc: bigint]
scala> res3.show()
<console>:30: error: value show is not a member of Unit
res3.show()
^
scala> res5.show()
+---+---+---+
| id| bb| cc|
+---+---+---+
| 0| 0| 0|
| 1| 0| 0|
| 2| 0| 0|
| 3| 0| 0|
| 4| 0| 0|
| 5| 0| 0|
| 6| 0| 0|
| 7| 0| 0|
| 8| 0| 0|
| 9| 0| 0|
+---+---+---+
scala>