Spark中的RDD和Dataframe有什么区别?

时间:2019-08-20 04:51:06

标签: apache-spark pyspark pyspark-sql

嗨,我对Apache Spark比较陌生。我想了解RDD,数据框和数据集之间的区别。

例如,我正在从s3存储桶中提取数据。

df=spark.read.parquet("s3://output/unattributedunattributed*")

在这种情况下,当我从s3加载数据时,RDD是什么?另外,由于RDD是不可变的,因此我可以更改df的值,因此rdf不能被rdd。

欣赏是否有人可以解释RDD,数据框和数据集之间的差异。

1 个答案:

答案 0 :(得分:0)

df=spark.read.parquet("s3://output/unattributedunattributed*")

使用此语句,您正在创建一个数据框。

要创建RDD,请使用

df=spark.textFile("s3://output/unattributedunattributed*")

RDD代表弹性分布式数据集。它是记录的只读分区集合。 RDD是Spark的基本数据结构。它允许程序员执行内存中的计算

在Dataframe中,将数据组织到命名列中。例如,关系数据库中的表。它是不可变的分布式数据集合。 Spark中的DataFrame允许开发人员将结构强加到分布式数据集合上,从而实现更高级别的抽象。

  1. 如果要对整个数据集应用地图或过滤器,请使用RDD
  2. 如果您要处理单个列或要对列执行操作/计算,请使用Dataframe。

例如,如果要将整个数据中的“ A”替换为“ B” 那么RDD很有用。

rdd = rdd.map(lambda x: x.replace('A','B')

如果要更新列的数据类型,请使用Dataframe。

dff = dff.withColumn("LastmodifiedTime_timestamp", col('LastmodifiedTime_time').cast('timestamp')

RDD可以转换为Dataframe,反之亦然。