Pyspark - 避免使用爆炸

时间:2021-07-08 22:02:09

标签: python apache-spark pyspark user-defined-functions explode

我想在不使用“explode”或“UDF”的情况下检查数组列的值是否等于“A”,因为它使我的 DataFrame 非常大并且过程非常缓慢。

所以我有这个

+-----+----+--------------------+---------+
| Name| Age|            Subjects|   Grades|
+-----+----+--------------------+---------+
|[Bob]|[16]|[Maths, Physics, ...|[A, B, C]|
+-----+----+--------------------+---------+

我想要这个

+-----+----+--------------------+---------+--------------------+
| Name| Age|            Subjects|   Grades|         test       |
+-----+----+--------------------+---------+--------------------+
|[Bob]|[16]|[Maths, Physics, ...|[A, B, C]|[true, false, false]|
+-----+----+--------------------+---------+--------------------+

有什么解决办法吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以为此使用 SQL TRANSFORM

import pyspark.sql.functions as F

df = df.withColumn("test", F.expr("TRANSFORM(Grades, x -> x = 'A')"))
相关问题