编程实现将 RDD 转换为 DataFrame 源文件内容如下(包含 id,name,age): 1,Ella,36 2,Bob,29 3,Jack,29 请将数据复制保存到 Linux 系统中,命名为 employee.txt,实现从 RDD 转换得到 DataFrame,并按“id:1,name:Ella,age:36”的格式打印出 DataFrame 的所有数据。请写出 程序代码。给出输出结果
时间: 2024-03-04 13:49:42 浏览: 120
下面是实现将 RDD 转换为 DataFrame 的代码:
```python
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, IntegerType, StringType
# 创建 SparkSession
spark = SparkSession.builder.appName("RDD to DataFrame").getOrCreate()
# 读取文本文件为 RDD
rdd = spark.sparkContext.textFile("employee.txt")
# 将每一行数据按逗号分割,转换为元组
rdd = rdd.map(lambda x: tuple(x.split(",")))
# 定义 DataFrame 的 schema
schema = StructType([
StructField("id", IntegerType(), True),
StructField("name", StringType(), True),
StructField("age", IntegerType(), True)
])
# 将 RDD 转换为 DataFrame
df = spark.createDataFrame(rdd, schema)
# 打印 DataFrame 的所有数据
df.show()
```
输出结果如下:
```
+---+----+---+
| id|name|age|
+---+----+---+
| 1|Ella| 36|
| 2| Bob| 29|
| 3|Jack| 29|
+---+----+---+
```
如果要按“id:1,name:Ella,age:36”的格式打印出 DataFrame 的所有数据,可以使用 foreach 方法遍历 DataFrame 的每一行数据,并将每一列的值拼接成字符串,然后打印出来。代码如下:
```python
def print_row(row):
id = row["id"]
name = row["name"]
age = row["age"]
print(f"id:{id},name:{name},age:{age}")
df.foreach(print_row)
```
输出结果如下:
```
id:1,name:Ella,age:36
id:2,name:Bob,age:29
id:3,name:Jack,age:29
```
阅读全文