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