这段代码使用PySpark创建了一个DataFrame,对数据进行分组并计算平均值。以下是逐步总结: 代码作用: 创建一个包含图书名称和销量的DataFrame 按图书名称分组 计算每本书的平均销量 显示结果 逐步解析: 创建DataFrame: python bookDF = spark \ .createDataFrame([("spark", 2), ("hadoop", 6), ("hadoop", 4), ("spark", 6)]) \ .toDF("book", "amount") 创建了一个包含两列的DataFrame: book列:图书名称(字符串) amount列:销售数量(整数) 中间结果 bookDF: +------+------+ | book|amount| +------+------+ | spark| 2| |hadoop| 6| |hadoop| 4| | spark| 6| +------+------+ 分组聚合计算平均值: python avgDF = bookDF.groupBy("book").agg(avg("amount")) 按book列分组 对每组计算amount列的平均值 中间结果 avgDF(逻辑上): +------+------------+ | book|avg(amount)| +------+------------+ | spark| 4.0| # (2+6)/2=4 |hadoop| 5.0| # (6+4)/2=5 +------+------------+ 显示结果: python avgDF.show() 最终输出(实际显示格式): +------+-----------+ | book|avg(amount)| +------+-----------+ | spark| 4.0| |hadoop| 5.0| +------+-----------+ 关键点: 原始数据有4条记录(2本书,每本2条记录) 分组后变成2个组(spark和hadoop) 计算平均值时: spark组:(2 + 6)/2 = 4.0 hadoop组:(6 + 4)/2 = 5.0 最终结果包含两列:分组列book和聚合结果列avg(amount) 注意:实际代码中avg("amount")生成的列名默认是avg(amount),如果需要自定义列名,可以使用.alias()或直接指定:avg("amount").alias("average_amount") 根据这个生成讲解动画

视频信息