PySpark无法匹配数组

PySpark无法匹配数组,pyspark,apache-spark-sql,Pyspark,Apache Spark Sql,我正在使用PySpark进行简单的数据帧过滤。 Spark数据帧的df_规则如下所示: 我通过以下方式获得了此df_规则: from pyspark.ml.fpm import FPGrowth from pyspark.sql import SparkSession spark = SparkSession.builder.master("local")\ .appName("Association Rules FP-Growth")\ .config("spark.some.

我正在使用PySpark进行简单的数据帧过滤。 Spark数据帧的df_规则如下所示:

我通过以下方式获得了此
df_规则

from pyspark.ml.fpm import FPGrowth
from pyspark.sql import SparkSession

spark = SparkSession.builder.master("local")\
   .appName("Association Rules FP-Growth")\
   .config("spark.some.config.option", "some-value")\
   .getOrCreate()

df = spark.createDataFrame([
    (0, [1, 2, 5]),
    (1, [1, 2, 3, 5]),
    (2, [1, 2])
], ["id", "items"])

fpGrowth = FPGrowth(itemsCol="items", minSupport=0.5, minConfidence=0.6)
model = fpGrowth.fit(df)

# Display frequent itemsets.
model.freqItemsets.show()

# Display generated association rules.
df_rules = model.associationRules
我只想做
df_规则。其中(df_规则.continue==[1])
。它首先给了我数据类型不匹配错误,因为
dfu规则。随后的
array
。因此,我通过以下方式转换了后续列数据类型:

from pyspark.sql.types import ArrayType, IntegerType
df_rules = df_rules.withColumn("consequent", df_rules.consequent.cast(ArrayType(IntegerType())))
但仍然有错误:


您知道如何成功进行筛选吗?

您不必将
数组
转换为
数组
,只需使用long:

from pyspark.sql.functions import array, lit

df_rules.where(df_rules.consequent == array(lit(1L)))