我有一个带有以下数据的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。

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

最佳答案

只是做一个过滤器和一个限制。以下代码是Scala,但您会明白这一点。

假设您的数据帧称为df,则:

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

08-28 05:07