RDD<--> DataFrame

在RDD和DataFrame之间进行转换:

  • 从 RDD 创建 DataFrame

    • 如果 RDD 包含 Row 对象,可以直接使用 toDF() 方法。
    • 如果 RDD 包含其他类型的对象,可以使用 createDataFrame() 方法,并指定模式(schema)。
  • 从 DataFrame 创建 RDD

    • 直接使用 DataFrame 的 rdd 属性即可获取底层的 RDD。
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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值