【问题标题】:Pyspark substract without selecting column [duplicate]Pyspark减去而不选择列[重复]
【发布时间】:2018-06-11 17:16:15
【问题描述】:
我有两张桌子
-
订单 - 具有以下列
order_id、order_date、order_customer_id、order_status
-
客户 - 具有以下列
customer_id、customer_fname、customer_lname
我想用dataframe写一段代码,相当于在不创建表的情况下跟随sql查询
SELECT customer_fname, customer_lname
FROM customer
WHERE customer_id NOT IN (SELECT order_customer_id
from order)
我怎样才能做到这一点。
【问题讨论】:
标签:
apache-spark
pyspark
pyspark-sql
【解决方案1】:
来自 pyspark v2.1.1:
使用“left_anti”连接删除另一个表中的元素:
df_result = df_customers.join(df_orders, df_customers.customer_id == df_orders.order_customer_id, 'left_anti')
df_result = df_result.select('customer_fname', 'customer_lname')
pyspark v2.1.1 之前:
使用“left_outer”连接并删除空值:
df_result = df_customers.join(df_orders, df_customers.customer_id == df_orders.order_customer_id, 'left_outer')
df_result = df_result.where('order_id is null')
df_result = df_result.select('customer_fname', 'customer_lname')