首页 文章

在Spark Dataframe(Pyspark)中提取与特定条件匹配的第一个“行集”

提问于
浏览
1

我有一个Spark DataFrame,其数据如下:

ID | UseCase
-----------------
0  | Unidentified
1  | Unidentified
2  | Unidentified
3  | Unidentified
4  | UseCase1
5  | UseCase1
6  | Unidentified
7  | Unidentified
8  | UseCase2
9  | UseCase2
10 | UseCase2
11 | Unidentified
12 | Unidentified

我必须提取列 UseCase 中具有值 Unidentified 的前4行,并使用它们进行进一步处理 . 我不想在此时获得 Unidentified 值的中间和最后两行 .

我想避免使用 ID 列,因为它们没有修复 . 以上数据只是一个样本 . 当我使用map函数(在将其转换为RDD之后)或UDF之后,我在输出DataFrame中结束了8行(这是预期的这些函数) .

怎么能实现这一目标?我在PySpark工作 . 我不想在DataFrame上使用collect并将其作为迭代列表 . 这会破坏Spark的目的 . DataFrame大小最高可达4-5 GB .

你能否建议如何做到这一点?提前致谢!

1 回答

  • 1

    只需要过滤和限制 . 以下代码是Scala,但您将理解这一点 .

    假设您的数据帧被称为df,然后:

    df.filter($"UseCase"==="Unidentified").limit(4).collect()
    

相关问题