我已经创建了数据框,从下面的表中获取MaxRecordId
作为整数值。
val MaxRecordID = DF.agg(max("RecordID"))
现在,我必须在withColumn
中使用MaxRecordID
,如下所示:
Df2.withColumn("RecordID", MaxRecordID)
但这并没有给出正确的结果,得到'MaxRecordID:Int',但我需要MaxRecordID
的值
如何在上面的语句中传递MaxRecordID
。
Df2.withColumn("RecordID", lit(MaxRecord))
,但得到错误为:
不支持特性:Literal for '[MaxRecordID: int]
是否有办法在withColumn
中传递这个变量整数值?
您的问题是您的MaxRecordID
不是Int
,而是Dataframe
。如果您想获取该值,则需要使用.head
和getInt
方法,如下所示:
val df = Seq(10, 102, 103, 1003).toDF("RecordID")
val aggregated_df = df.agg(max("RecordID"))
aggregated_df: org.apache.spark.sql.DataFrame = [max(RecordID): int]
val maxRecordId = aggregated_df.head.getInt(0)
maxRecordId: Int = 1003
然后你可以用
df.withColumn("myMaxColumn", lit(maxRecordId)).show()
+--------+-----------+
|RecordID|myMaxColumn|
+--------+-----------+
| 10| 1003|
| 102| 1003|
| 103| 1003|
| 1003| 1003|
+--------+-----------+