计算每个不同值在PySparkSQL Join的列中出现多少次

我已使用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 |
+--------+---+
yxc130170 回答:计算每个不同值在PySparkSQL Join的列中出现多少次

您可以进行分组计数以获取列的不同值:

exampleValue: 280.0
field: 500

您将获得想要的输出。

对于SQL查询:

group_df = df.groupby("Postcode").count()

此外,我还从您的query = """ SELECT pcode.Postcode,COUNT(pcode.Postcode) AS Num FROM pcode RIGHT JOIN bgl ON (bgl.Longitude = pcode.Lon AND bgl.Latitude = pcode.Lat) GROUP BY pcode.Postcode """ count = spark.sql(query) FROM子句中复制了内容,以使查询与 copy-pasta 更加相关。

本文链接:https://www.f2er.com/3128762.html

大家都在问