提问人:rouble 提问时间:11/17/2023 最后编辑:rouble 更新时间:11/17/2023 访问量:44
对布尔值进行过滤时出现奇怪的 pyspark 行为
Weird pyspark behavior when filtering on booleans
问:
我们有一些现有的代码曾经在 Spark 3.1 中工作,现在在 Spark 3.3 中不起作用。这真的是微不足道的代码,所以它让我大吃一惊为什么过滤器不起作用:
widgets_df = widgets_df.filter(F.col("_id").isin(*widget_ids))
出于某种原因,即使有 F.col(“_id”) 所在的行widget_ids,我们最终也会得到一个空widgets_df。
因此,我们决定对此进行一些重构,以调试正在发生的事情
widgets_df = widgets_df.withColumn("IdMatch", F.col("_id").isin(widget_ids))
# print outs for debugging
widgets_df.printSchema()
widgets_df.show(vertical=True)
# We can clearly see the IdMatch column with value true on one row.
# IdMatch is of type Boolean
widgets_df = widgets_df.filter(F.col("IdMatch") == True) // But this will drop all rows
我们又有一个空widgets_df。
我们可能在这里遗漏了一些相对微不足道的东西。我们错过了什么?
答: 暂无答案
评论