使用Join Spark SQL query将Groupby更改为Spark Datafram

2024-10-06 13:07:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我最初使用sparksql编写脚本,但现在出于性能和其他原因,我尝试将SQL查询转换为PySpark数据帧。在

我有Orders(OrderID,CustomerID,EmployeeID,OrderDate,ShipperID)Shippers(ShipperID, ShipperName)

我的Spark SQL查询列出了每个发货人发送的订单数:

 sqlContext.sql("SELECT Shippers.ShipperName, COUNT(Orders.ShipperID) AS NumberOfOrders 
 FROM Orders LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID 
 GROUP BY ShipperName")

现在,当我试图用Spark Dataframe替换上面的SQL查询时,我写下

^{pr2}$

但我在这里得到一个错误,主要是因为我觉得在从Orders表中查找orderId的count时聚合count函数是错误的。在

以下是我的错误获取:-在

"An error occurred while calling {0}{1}{2}.\n".format(target_id, ".", name), value)"

有人能帮我重构上面的SQL查询来触发Dataframe吗?在


Tags: 数据脚本dataframesqlcount错误原因性能
1条回答
网友
1楼 · 发布于 2024-10-06 13:07:14

下面是针对您的问题的pyspark操作:

import pyspark.sql.functions as F

Shippers.alias("s").join(
    Orders.alias("o"),
    on = "ShipperID",
    how = "left"
).groupby(
    "s.ShipperName"
).agg(
    F.count(F.col("o.OrderID")).alias("NumberOfOrders")
).show()

相关问题 更多 >