使用Spark RDD相应算子,完成以下操作,假设SparkContext对象sc已创建,所有包已导入。 (1)读取文件test.txt,文件存放在d盘;文件中的数据每行按照空格进行切分,最终结果保存在名为data的RDD中。 (2)一共有多少个小于20岁的人参加考试?
时间: 2024-10-10 22:13:13 浏览: 54
首先,让我们通过`SparkContext`的`textFile`函数读取位于D盘`test.txt`文件的内容,并使用`flatMap`算子对每一行进行分割:
```python
from pyspark import SparkConf, SparkContext
# 创建Spark配置并初始化SparkContext
conf = SparkConf().setAppName("ReadingTest")
sc = SparkContext(conf=conf)
# 读取并分割文件内容
data_rdd = sc.textFile(r"D:\test.txt").flatMap(lambda line: line.split(' '))
```
对于第二个问题,如果我们有一个包含年龄信息的数据集,比如每个元素是一个字符串格式如"Personname Age",我们可以先将年龄转换成整数类型,然后使用`filter`和`count`算子找出小于20岁的人数:
```python
# 假设数据格式是这样的:"John 18", "Alice 25", ...
age_data = data_rdd.map(lambda x: int(x.split()[1])) # 提取年龄
# 筛选小于20岁的数据,并计算人数
num_young_people = age_data.filter(lambda age: age < 20).count()
num_young_people
```
最后,记得在程序结束后调用`sc.stop()`来关闭SparkContext。
阅读全文