使用PySpark计算文本文件数值列的平均值

本文将介绍如何使用PySpark读取文本文件,提取指定列的数值并计算平均值。我们将分别使用SparkContext和SparkSession两种方式实现。

方法一:使用SparkContextpythonfrom pyspark import SparkContext

创建SparkContextsc = SparkContext.getOrCreate()

读取文本文件lines = sc.textFile('data01.txt')

提取数值列并转换为整数score = lines.map(lambda x: int(x.split()[2]))

计算总数和平均值num = score.count()total_score = score.reduce(lambda x, y: x + y)avg = total_score / num

打印结果print(avg)

代码解释:

  1. 首先,我们导入SparkContext并创建一个实例。2. 使用textFile方法读取文本文件data01.txt。3. 利用map方法对每一行进行处理,使用split()函数按空格分割字符串,并提取第三个元素(索引为2)转换为整数,得到score。4. 使用count方法计算总数num,使用reduce方法计算总和total_score。5. 最后,计算平均值并打印结果。

方法二:使用SparkSessionpythonfrom pyspark.sql import SparkSession

创建SparkSessionspark = SparkSession.builder.getOrCreate()

读取文本文件lines = spark.read.text('data01.txt').rdd

提取数值列并转换为整数score = lines.map(lambda x: int(x[0].split()[2]))

计算总数和平均值num = score.count()total_score = score.reduce(lambda x, y: x + y)avg = total_score / num

打印结果print(avg)

代码解释:

  1. 首先,我们导入SparkSession并创建一个实例。2. 使用read.text方法读取文本文件data01.txt,并使用.rdd将其转换为RDD。3. 之后步骤与方法一相同,利用mapcountreduce等方法计算平均值并打印。

总结:

以上两种方法都可以实现从文本文件中提取数值列并计算平均值的功能。 SparkSession是Spark 2.0以后推荐使用的API,它提供了更高级的DataFrame和Dataset API,功能更强大,代码更简洁易懂。

使用PySpark计算文本文件数值列的平均值

原文地址: https://www.cveoy.top/t/topic/kL7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录