【发布时间】:2016-12-15 14:20:25
【问题描述】:
我有一个 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。
您能否建议如何做到这一点? 提前致谢!
【问题讨论】:
-
当您说“前四行”时,您的意思是您想要按 ID 排序的前 4 行?
-
抱歉不清楚。我需要从 DataFrame 中获取前 'n' 行,这些行在 UseCase 列下具有
Unidentified的值。 -
是的,但是“第一”是什么意思?如果 DataFrame 没有排序,“first”是一个不确定的概念。您想要随机选择的第一行还是根据某些排序规则的第一行?
-
我正在尝试获取“UseCase”值为“Unidentified”的行。在此示例中,我将提取前四行并对其进行处理。处理后,'UseCase;列将替换为适当的 UseCase(如 4 中所示)。
-
好的,那么,当按 ID 排序时,您希望得到 all 行开头为 Unidentified as UseCase 的行,对吗?所以如果第一行有一个有效的用例,你就不拿了吗?
标签: python pyspark spark-dataframe rdd