如何查找 Spark 列是否包含某个值?

Ani*_*rty 5 apache-spark apache-spark-sql pyspark

我有以下火花数据框 -

+----+----+
|col1|col2|
+----+----+
|   a|   1|
|   b|null|
|   c|   3|
+----+----+
Run Code Online (Sandbox Code Playgroud)

Spark API 有没有办法检测是否col2包含,比如说3?请注意,答案应该只是一个指标值 -而不是中的yes/no一组记录。3col2

Ani*_*aha 6

PySpark 查找 DataFrame 是否包含特定值的推荐方法是使用pyspak.sql.Column.containsAPI。您可以在此基础上使用布尔值来获取True/False布尔值。对于你的例子:

bool(df.filter(df.col2.contains(3)).collect())

#Output 
>>>True
Run Code Online (Sandbox Code Playgroud)
bool(df.filter(df.col2.contains(100)).collect())

#Output 
>>>False
Run Code Online (Sandbox Code Playgroud)

来源:https://spark.apache.org/docs/3.1.1/api/python/reference/api/pyspark.sql.Column.contains.html

  • 最好使用 `.first()` 而不是 `.collect()`,因为不建议对大型数据集使用 `collect` (2认同)