有两个dataframe。一个是df1
,包含事件,其中一列是ID
。另一个df2
只含有ID
-s。
如何最好地创建df3
,它只包含ID
不存在于df2
中的行。
看起来Spark SQL不支持这种类型的查询:
sqlContext.sql(""" SELECT * FROM table_df1
WHERE ID NOT IN (SELECT ID FROM table_df2) """)
Spark SQL将从Spark 2.0版本开始支持这种类型的子查询(更多信息可在Databricks博客上获得)。
在旧版本的Spark中可以这样做:
df3 = sqlContext.sql(
"""
select
*
from df1 left join df2 on df1.id=df2.id
where df2.id is null
"""
)