我已使用PySpark SQL将两个表连接在一起,一个表包含经度和纬度的犯罪位置数据,另一个表包含其对应的经度和纬度的邮政编码。
我要解决的是如何统计每个邮政编码中发生了多少次犯罪。我是PySpark的新手,我的SQL生锈了,所以我不确定我要去哪里。
我尝试使用COUNT(DISTINCT),但这只是给我不同邮政编码的总数。
mySchema = StructType([StructField("Longitude",StringType(),True),StructField("Latitude",True)])
bgl_df = spark.createDataFrame(burglary_rdd,mySchema)
bgl_df.registerTempTable("bgl")
rdd2 = spark.sparkContext.textFile("posttrans.csv")
mySchema2 = StructType([StructField("Postcode",StructField("Lon",StructField("Lat",True)])
pcode_df = spark.createDataFrame(pcode_rdd,mySchema2)
pcode_df.registerTempTable("pcode")
count = spark.sql("SELECT COUNT(DISTINCT pcode.Postcode)
FROM pcode RIGHT JOIN bgl
ON (bgl.Longitude = pcode.Lon
AND bgl.Latitude = pcode.Lat)")
+------------------------+
|count(DISTINCT Postcode)|
+------------------------+
| 523371|
+------------------------+
相反,我想要类似的东西:
+--------+---+
|Postcode|Num|
+--------+---+
|LN11 9DA| 2 |
|BN10 8JX| 5 |
| EN9 3YF| 9 |
|EN10 6SS| 1 |
+--------+---+