有没有办法在不使用列表的情况下使用Dataframe的isin()?
我正在查看pyspark docs,看起来它需要字符串或列表。如果字符串或列表绝对庞大怎么办?还有其他选择吗?
答案 0 :(得分:1)
子查询
spark.createDataFrame([(1, ), (2, ), (3, ), (4, )], ["x"]).createTempView("df1")
spark.createDataFrame([(1, ), (3, ) ], ["x"]).createTempView("df2")
spark.sql("SELECT * FROM df1 WHERE x IN (SELECT x FROM df2)").show()
+---+
| x|
+---+
| 1|
| 3|
+---+
或加入(例如semi
as suggested Raphael Roth}:
spark.table("df1").join(spark.table("df2"), ["x"], "leftsemi").show()
+---+
| x|
+---+
| 1|
| 3|
+---+