Python 使用查找结构搜索pyspark数据帧

Python 使用查找结构搜索pyspark数据帧,python,apache-spark,pyspark,apache-spark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,我是PySpark的新手,我正在尝试创建一个泛型.where()函数,它可以接受任何查找结构,并使用该结构检查值是否存在 TYPES=('TYPE_1'、'TYPE_2'、'TYPE_3') 大概是这样的: ( 在哪里( 类型中的df.value ) ) 最有效的方法是什么?您可以从查找结构构造一个数组列,并使用array\u contains筛选该列是否包含结构中的元素 e、 g 谢谢你,你知道还有其他方法吗?@Bob另一种方法可能是使用UDF,但它会比使用本机Spark SQL函数的方法

我是PySpark的新手,我正在尝试创建一个泛型.where()函数,它可以接受任何查找结构,并使用该结构检查值是否存在

TYPES=('TYPE_1'、'TYPE_2'、'TYPE_3')
大概是这样的:

(
在哪里(
类型中的df.value
)
)

最有效的方法是什么?

您可以从查找结构构造一个数组列,并使用
array\u contains
筛选该列是否包含结构中的元素

e、 g


谢谢你,你知道还有其他方法吗?@Bob另一种方法可能是使用UDF,但它会比使用本机Spark SQL函数的方法慢。我一直在读有关UDF的文章。好的,知道这一点很好-在您的回答中,不返回真/假表,您如何返回正确的
列。只需在末尾添加一个过滤器:
df.withColumn('contains',F.array_contains(F.array(*[F.lit(i)表示arr中的i]),F.col filter('contains=1')
dict也可以这样做吗?还是元组?
>>> df = spark.createDataFrame([(1,),(2,),(3,)],['column'])
>>> arr = [2,3,4]
>>> df.withColumn('contains', F.array_contains(F.array(*[F.lit(i) for i in arr]), F.col('column'))).show()
+------+--------+
|column|contains|
+------+--------+
|     1|   false|
|     2|    true|
|     3|    true|
+------+--------+