读取employee.txt,实现从RDD转换得到DataFrame,并按“id:1,name:Ella,age:36”的格式打印出DataFrame的所有数据
时间: 2024-02-19 18:02:36 浏览: 39
假设employee.txt文件中的内容如下:
```
1,Ella,36
2,Bob,29
3,Jack,29
```
你可以按照以下方式读取该文件并将其转换为DataFrame:
```python
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, StringType, IntegerType
spark = SparkSession.builder.appName("RDD to DataFrame").getOrCreate()
schema = StructType([
StructField("id", IntegerType(), True),
StructField("name", StringType(), True),
StructField("age", IntegerType(), True)
])
rdd = sc.textFile("employee.txt").map(lambda line: line.split(",")).map(lambda row: (int(row[0]), row[1], int(row[2])))
df = spark.createDataFrame(rdd, schema)
df.show()
```
这里,我们首先定义了一个schema,用于指定DataFrame的列名和数据类型。然后,我们使用textFile()方法读取文件并将每行按逗号分隔为一个列表,接着使用map()方法将每个列表转换为一个元组。最后,我们将转换后的RDD和schema传递给createDataFrame()方法创建一个DataFrame。
输出结果应该如下所示:
```
+---+----+---+
| id|name|age|
+---+----+---+
| 1|Ella| 36|
| 2| Bob| 29|
| 3|Jack| 29|
+---+----+---+
```
要按照“id:1,name:Ella,age:36”的格式打印DataFrame的所有数据,可以按照以下方式使用collect()方法和map()方法:
```python
rdd = df.rdd.map(lambda row: "id:{},name:{},age:{}".format(row[0], row[1], row[2]))
data = rdd.collect()
for d in data:
print(d)
```
输出结果应该如下所示:
```
id:1,name:Ella,age:36
id:2,name:Bob,age:29
id:3,name:Jack,age:29
```