如何在withColumn中使用可变整数值



我已经创建了数据框,从下面的表中获取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。如果您想获取该值,则需要使用.headgetInt方法,如下所示:

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|
+--------+-----------+

相关内容

  • 没有找到相关文章

最新更新