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

时间:2016-12-15 14:20:26

标签: python pyspark spark-dataframe rdd

我有一个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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

假设您的数据框名为df,然后是:

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