Spark中RDD和Dataframe有什么区别?

3

你好,我相对来说还是一个Apache Spark的新手。我希望能够理解RDD、dataframe和datasets之间的区别。

比如说,我正在从S3存储桶中提取数据。

最初的回答:

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

在这种情况下,当我从s3加载数据时,RDD会是什么?由于RDD是不可变的,所以我可以为df更改值,因此df不能是rdd。 如果有人能够解释RDD、DataFrame和DataSet之间的区别,那就太感激了。"最初的回答"

这篇文章解释得很清楚:https://dev59.com/5VwZ5IYBdhLWcg3wYvgk - undefined
1个回答

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

通过这个语句,您可以创建一个数据框架。

要创建RDD,请使用:

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

RDD是Resilient Distributed Datasets的缩写,指的是只读的分区记录集合。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,反之亦然。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接