【发布时间】:2021-02-01 07:44:30
【问题描述】:
我在 spark 中使用 sqlcontext 完成了一次转换,但我只想使用 Spark Data frame 编写相同的查询。该查询包括连接操作和 SQL 的 case 语句。 sql查询编写如下:
refereshLandingData=spark.sql( "select a.Sale_ID, a.Product_ID,"
"CASE "
"WHEN (a.Quantity_Sold IS NULL) THEN b.Quantity_Sold "
"ELSE a.Quantity_Sold "
"END AS Quantity_Sold, "
"CASE "
"WHEN (a.Vendor_ID IS NULL) THEN b.Vendor_ID "
"ELSE a.Vendor_ID "
"END AS Vendor_ID, "
"a.Sale_Date, a.Sale_Amount, a.Sale_Currency "
"from landingData a left outer join preHoldData b on a.Sale_ID = b.Sale_ID" )
现在我想要 scala 和 python 中的 spark 数据帧中的等效代码。我尝试了一些代码,但它的
不工作。我试过的代码如下:
joinDf=landingData.join(preHoldData,landingData['Sale_ID']==preHoldData['Sale_ID'],'left_outer')
joinDf.withColumn\
('QuantitySold',pf.when(pf.col(landingData('Quantity_Sold')).isNull(),pf.col(preHoldData('Quantity_Sold')))
.otherwise(pf.when(pf.col(preHoldData('Quantity_Sold')).isNull())),
pf.col(landingData('Quantity_Sold'))).show()
在上面的代码中,连接完成得很完美,但案例条件不起作用。 我得到--> TypeError: 'DataFrame' object is not callable 我正在使用 spark 2.3.2 版本和 python 3.7 以及类似的 scala 2.11,以防 spark-scala 请任何人建议我任何等效的代码或指南!
【问题讨论】:
-
检查您的 Python 代码,因为您正在尝试从数据框实例调用函数
标签: python scala apache-spark pyspark apache-spark-sql