Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pyspark 在某些匹配条件下如何左反连接_Pyspark - Fatal编程技术网

Pyspark 在某些匹配条件下如何左反连接

Pyspark 在某些匹配条件下如何左反连接,pyspark,Pyspark,我有两个表——一个是核心数据,有一对ID(PC1和P2)和一些blob数据(P3)。另一个是前表中PC1的黑名单数据。我将调用_df中的第一个表和第二个黑名单 我要做的是从in_df中删除行,只要in_df.PC1==blacklist_df.P1和in_df.P2==black_list_df.B1。下面是一个代码片段,以更明确地显示我想要实现的目标 in_df = sqlContext.createDataFrame([[1,2,'A'],[2,1,'B'],[3,1,'C'], [4,1

我有两个表——一个是核心数据,有一对ID(PC1和P2)和一些blob数据(P3)。另一个是前表中PC1的黑名单数据。我将调用_df中的第一个表和第二个黑名单

我要做的是从in_df中删除行,只要in_df.PC1==blacklist_df.P1和in_df.P2==black_list_df.B1。下面是一个代码片段,以更明确地显示我想要实现的目标

in_df = sqlContext.createDataFrame([[1,2,'A'],[2,1,'B'],[3,1,'C'], 
[4,11,'D'],[1,3,'D']],['PC1','P2','P3'])
in_df.show()

+---+---+---+
|PC1| P2| P3|
+---+---+---+
|  1|  2|  A|
|  2|  1|  B|
|  3|  1|  C|
|  4| 11|  D|
|  1|  3|  D|
+---+---+---+

blacklist_df = sqlContext.createDataFrame([[1,2],[2,1]],['P1','B1'])
blacklist_df.show()

+---+---+
| P1| B1|
+---+---+
|  1|  2|
|  2|  1|
+---+---+
最后我想得到的是:

+---+--+--+
|PC1|P2|P3|
+---+--+--+
|  1| 3| D|
|  3| 1| C|
|  4|11| D|
+---+--+--+

我尝试了左反联接,但未成功。

将联接条件作为列表传递给
join
函数,并指定
how='LEFT\u ANTI'
作为联接类型:

in_df.join(
黑名单,
[in_df.PC1==blacklist_df.P1,in_df.P2==blacklist_df.B1],
你是怎么离开的
).show()
+---+---+---+
|PC1 | P2 | P3|
+---+---+---+
|1 | 3 | D|
|4 | 11 | D|
|3 | 1 | C|
+---+---+---+