You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark如何筛选行求和以找出广告点击量最高的国家

PySpark 实现获取广告点击量最高国家

核心逻辑是按国家维度对广告点击字段做分组求和,再按总点击量倒序排序后取对应结果即可。

完整实现代码

1. 依赖导入及SparkSession初始化

from pyspark.sql import SparkSession
from pyspark.sql.functions import sum, desc, max

# 初始化Spark会话
spark = SparkSession.builder.appName("TopAdClickCountry").getOrCreate()

2. 数据集加载

可根据你的实际存储格式调整加载逻辑,以下提供两种场景的写法:

  • 从CSV文件加载(匹配你给出的示例数据格式)
df = spark.read.option("header", "true") \
    .option("delimiter", "|") \
    .option("trimValues", "true") \
    .csv("替换为你的实际文件路径")
  • 内存构造测试数据(和你示例数据完全一致)
test_data = [("USA", 1), ("USA", 0), ("USA", 1), ("PR", 0), ("PR", 0), ("PR", 1)]
df = spark.createDataFrame(test_data, schema=["Country", "Ad Click"])

3. 计算最高点击国家

仅取单条最高的场景

# 按国家分组求和、倒序排序后取第一条
top_country = df.groupBy("Country") \
    .agg(sum("Ad Click").alias("total_clicks")) \
    .orderBy(desc("total_clicks")) \
    .limit(1)

# 打印结果
top_country.show()

对应示例数据的输出结果为:

+-------+------------+
|Country|total_clicks|
+-------+------------+
|    USA|           2|
+-------+------------+

处理多个国家点击量并列最高的场景

# 先计算所有国家的总点击量
country_click_sum = df.groupBy("Country") \
    .agg(sum("Ad Click").alias("total_clicks"))
# 获取最高点击量数值
max_click_val = country_click_sum.agg(max("total_clicks")).collect()[0][0]
# 过滤所有总点击量等于最高值的国家
top_countries = country_click_sum.filter(country_click_sum.total_clicks == max_click_val)

# 打印结果
top_countries.show()

内容的提问来源于stack exchange,提问作者AlyLo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:54:03