0
我在pyspark有註冊表。爲什麼pyspark會給出錯誤的方差值?
+--------+-------+--------+------------+---------+-----------------+----------------------+
|order_id|user_id|eval_set|order_number|order_dow|order_hour_of_day|days_since_prior_order|
+--------+-------+--------+------------+---------+-----------------+----------------------+
| 2168274| 2| prior| 1| 2| 11| null|
| 1501582| 2| prior| 2| 5| 10| 10|
| 1901567| 2| prior| 3| 1| 10| 3|
| 738281| 2| prior| 4| 2| 10| 8|
| 1673511| 2| prior| 5| 3| 11| 8|
| 1199898| 2| prior| 6| 2| 9| 13|
| 3194192| 2| prior| 7| 2| 12| 14|
| 788338| 2| prior| 8| 1| 15| 27|
| 1718559| 2| prior| 9| 2| 9| 8|
| 1447487| 2| prior| 10| 1| 11| 6|
| 1402090| 2| prior| 11| 1| 10| 30|
| 3186735| 2| prior| 12| 1| 9| 28|
| 3268552| 2| prior| 13| 4| 11| 30|
| 839880| 2| prior| 14| 3| 10| 13|
| 1492625| 2| train| 15| 1| 11| 30|
+--------+-------+--------+------------+---------+-----------------+----------------------+
我想計算days_since_prior_order
的方差,不包括空值。正確的值應該是97.91836734693878,這是由配置單元和python給出的。但我的pyspark給了我105.45054945054943。
spark.sql("select variance(days_since_prior_order) from \
(select * from orders where user_id=2 and days_since_prior_order is not null) ").show()
原始表格數據類型正確。
|-- order_id: long (nullable = true)
|-- user_id: long (nullable = true)
|-- eval_set: string (nullable = true)
|-- order_number: short (nullable = true)
|-- order_dow: short (nullable = true)
|-- order_hour_of_day: short (nullable = true)
|-- days_since_prior_order: short (nullable = true)
你是如何計算的火花方差的文檔,你可以請提供代碼。 ?? –