在 Spark Scala 中向数据集添加过滤条件

Posted

技术标签:

【中文标题】在 Spark Scala 中向数据集添加过滤条件【英文标题】:Add filter condition to dataset in Spark Scala 【发布时间】:2022-01-22 15:55:09 【问题描述】:

在我的数据集中有 12 个不同的列,例如 ageheartdiseasemaximum heart rate

所以,我想将数据集重新排列到不同的年龄范围,例如0-1010-2030-40...

对于每个age 组,它们的最大心率因公式220-age 而不同。比如取年龄组10-20,取平均年龄15岁,220-15=205是最大心率,所以我想要10-20年龄组中心率高于这个限制的人数。

下面是我用来创建年龄组的代码。

 val HR_DF = heartDF.filter("HeartDisease == 1")
      .withColumn("Range", $"Age" - ($"Age" % 10))
      .withColumn("Range", concat($"Range", lit(" - "), $"Range" + 10))
      .groupBy($"Range")
      .count()
      .sort("Range")

【问题讨论】:

请以文本而非图像的形式提供数据样本。 Why not upload images of code/errors when asking a question? 【参考方案1】:

使用spark的when().otherwise()函数怎么样?

您可以制作每个Range的最大心率的新火花柱。

以下代码是 pyspark 示例(python)。

import pyspark.sql.functions as F

HR_DF.filter(HR_DF['restingBP'] > F.when(HR_DF['range'] == '10-20', 220 - 15).when(HR_DF['range'] == '20-30', 220 - 25)).show()

也许这是相同的 scala 代码。

HR_DF.filter(HR_DF("restingBP") > when(HR_DF("range") === "10-20", 220 - 15).when(HR_DF("range") === "20-30", 220 - 25)).show()

【讨论】:

以上是关于在 Spark Scala 中向数据集添加过滤条件的主要内容,如果未能解决你的问题,请参考以下文章

火花数据集过滤器列,条件如pandas

scala - Spark:如何在 groupedData 中获取带有条件的结果集

如何在 Scala Spark 中使用具有许多条件的“.withColumn”为数据集创建新列

在 Spark Scala 中将一行从一个数据集添加到另一个数据集

NotNull 条件不适用于 spark 数据框 scala 中的 withColumn 条件

将一个数据框列值传递给另一个数据框过滤条件表达式 + Spark 1.5