有没有办法在不使用列表的情况下使用Dataframe的isin()?

时间:2017-12-19 21:02:51

标签: python sql apache-spark dataframe pyspark

有没有办法在不使用列表的情况下使用Dataframe的isin()?

我正在查看pyspark docs,看起来它需要字符串或列表。如果字符串或列表绝对庞大怎么办?还有其他选择吗?

1 个答案:

答案 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|
+---+