我有一个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。
您能否建议如何做到这一点? 提前谢谢!
答案 0 :(得分:1)
只需要过滤和限制。以下代码是Scala,但您将理解这一点。
假设您的数据框名为df,然后是:
df.filter($"UseCase"==="Unidentified").limit(4).collect()