【问题标题】:What's the difference between RDD and Dataframe in Spark? [duplicate]Spark中的RDD和Dataframe有什么区别? [复制]
【发布时间】:2019-12-25 06:31:15
【问题描述】:

您好,我对 apache spark 比较陌生。我想了解 RDD、数据框和数据集之间的区别。

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

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

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

如果有人能解释 RDD、dataframe 和 datasets 之间的区别,不胜感激。

【问题讨论】:

标签: apache-spark pyspark pyspark-sql


【解决方案1】:
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,反之亦然。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2016-05-27
    • 2015-12-05
    • 2017-10-05
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    相关资源
    最近更新 更多