在RDD和DataFrame之间进行转换:
-
从 RDD 创建 DataFrame:
- 如果 RDD 包含
Row
对象,可以直接使用toDF()
方法。 - 如果 RDD 包含其他类型的对象,可以使用
createDataFrame()
方法,并指定模式(schema)。
- 如果 RDD 包含
-
从 DataFrame 创建 RDD:
- 直接使用 DataFrame 的
rdd
属性即可获取底层的 RDD。
- 直接使用 DataFrame 的
from pyspark.sql import SparkSession
from pyspark.sql import Row
from pyspark.sql.types import StructType, StructField, StringType, IntegerType
# 初始化 SparkSession
spark = SparkSession.builder \
.appName("RDD and DataFrame Conversion Example") \
.getOrCreate()
# 创建 RDD
data = [
Row(name="John", age=25),
Row(name="Jane", age=30),
Row(name="Alice", age=28)
]
rdd = spark.sparkContext.parallelize(data)
# 将 RDD 转换成 DataFrame
df = rdd.toDF()
# 显示 DataFrame
print("原始 DataFrame:")
df.show()
# +----+---+
# |name|age|
# +----+---+
# |John| 25|
# |Jane| 30|
# |Alice| 28|
# +----+---+
# 将 DataFrame 转换成 RDD
rdd_from_df = df.rdd
# 显示 RDD 中的内容
print("从 DataFrame 转换的 RDD:")
print(rdd_from_df.collect())
# 输出: [Row(name='John', age=25), Row(name='Jane', age=30), Row(name='Alice', age=28)]
# 停止 SparkSession
spark.stop()