视频字幕
我们首先使用spark.createDataFrame方法从Python列表创建DataFrame。原始数据包含四条记录,每条记录包含书籍名称和数量。通过toDF方法指定列名为book和amount,系统会自动推断数据类型,将列表数据转换为结构化的DataFrame格式。
现在我们来详细查看bookDF的结构。DataFrame包含两列:book列为字符串类型,amount列为长整型。系统自动推断了数据类型。表格显示了四行数据,包含两本书的销售记录。我们可以看到spark和hadoop各有两条记录,这为后续的分组操作提供了基础。
我们将逐步分析这段Spark代码的执行过程。首先创建一个包含书籍名称和数量的DataFrame,然后按书籍名称分组,计算每组的平均值,最后显示结果。
第一步,我们创建一个DataFrame。这个DataFrame包含四条记录,每条记录有两个字段:book表示书籍名称,amount表示数量。数据包含两本spark书籍和两本hadoop书籍,数量分别为2、6、4、6。
第二步是GroupBy操作。当执行bookDF.groupBy('book')时,系统按book列的值对数据进行分组。相同书籍名称的记录被归为一组。结果是spark的两条记录形成一组,hadoop的两条记录形成另一组。
第三步是聚合操作。使用agg函数配合avg函数对每个组进行平均值计算。spark组的两个数值2和6,平均值为4。hadoop组的两个数值6和4,平均值为5。最终得到每个书籍的平均数量。
最后一步是显示结果。通过调用avgDF.show()方法,我们可以看到计算结果:spark书籍的平均数量为4.0,hadoop书籍的平均数量为5.0。最后调用spark.stop()关闭Spark会话。这就是完整的Spark DataFrame分组聚合操作流程。
现在我们详细看看聚合函数的应用过程。avg函数对每个分组独立计算平均值。对于spark组,取数值2和6,先求和得到8,再除以2得到平均值4.0。对于hadoop组,取数值6和4,先求和得到10,再除以2得到平均值5.0。这样就完成了分组聚合计算。
首先我们创建一个Spark DataFrame,包含书籍名称和数量信息。数据包含四条记录:spark书籍有2本和6本,hadoop书籍有6本和4本。
接下来执行groupBy操作,按book列对数据进行分组。相同书籍名称的记录会被归为一组。结果是spark组包含2和6两个数量值,hadoop组包含6和4两个数量值。
然后对每个分组执行聚合计算。使用avg函数计算amount列的平均值。spark组的平均值是2加6除以2等于4.0,hadoop组的平均值是6加4除以2等于5.0。最终得到包含book和avg(amount)列的新DataFrame。
计算完成后,将结果赋值给avgDF变量。整个操作流程是:从原始的bookDF开始,执行groupBy分组操作,然后进行agg聚合计算,最终得到avgDF结果。avgDF包含book列和avg(amount)列。
最后一步是显示结果。调用avgDF.show()方法将计算结果以表格格式输出到控制台。我们可以看到spark书籍的平均数量是4.0,hadoop书籍的平均数量是5.0。最后执行spark.stop()关闭Spark会话并释放资源。至此,整个Spark DataFrame分组聚合操作流程全部完成。