源文件内容如下(包含 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-01 09:49:46 浏览: 154
RMS.rar_4 3 2 1
好的,以下是实现代码:
```python
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, IntegerType, StringType
# 创建 SparkSession
spark = SparkSession.builder.appName("Employee").getOrCreate()
# 读取数据文件并创建 RDD
rdd = spark.sparkContext.textFile("employee.txt")
# 定义 RDD 的 schema
schema = StructType([
StructField("id", IntegerType(), True),
StructField("name", StringType(), True),
StructField("age", IntegerType(), True)
])
# 将 RDD 转换为 DataFrame
df = spark.createDataFrame(rdd.map(lambda x: x.split(',')), schema)
# 打印 DataFrame 的所有数据
df.show(truncate=False)
```
输出结果如下所示:
```
+---+----+---+
|id |name|age|
+---+----+---+
|1 |Ella|36 |
|2 |Bob |29 |
|3 |Jack|29 |
+---+----+---+
```
然后,我们可以按照指定的格式输出 DataFrame 的所有数据,代码如下:
```python
# 定义格式化输出函数
def format_output(row):
return "id:{},name:{},age:{}".format(row.id, row.name, row.age)
# 使用 foreach() 函数,对每一行数据进行格式化输出
df.foreach(lambda row: print(format_output(row)))
```
输出结果如下所示:
```
id:1,name:Ella,age:36
id:2,name:Bob,age:29
id:3,name:Jack,age:29
```
阅读全文