【问题标题】:Spark dataframe CSV vs ParquetSpark 数据帧 CSV 与 Parquet
【发布时间】:2018-02-11 00:36:01
【问题描述】:

我是 Spark 的初学者,并试图了解 Spark 数据帧的机制。 当从 csv 和 parquet 加载数据时,我正在比较 spark sql 数据帧上的 sql 查询的性能。我的理解是,一旦将数据加载到 spark 数据框中,数据的来源(csv 或 parquet)就无关紧要了。但是,我看到两者之间存在显着的性能差异。我正在使用以下命令加载数据并针对它编写查询。

dataframe_csv = sqlcontext.read.format("csv").load()

dataframe_parquet = sqlcontext.read.parquet()

请解释造成差异的原因。

【问题讨论】:

  • 您能否说明您在哪里看到了性能差异?是在您从 csv/parquet 读取数据后实际运行 spark sql 查询的时候吗? Spark 对数据帧有惰性求值。如果您要计算在 sql 查询数据帧上执行操作(例如,.show()、.count() 等)需要多长时间,它很可能包括从 csv/parquet 读取的时间。因此,镶木地板应该更快。

标签: pyspark spark-dataframe pyspark-sql


【解决方案1】:

之所以看到 csv 和 parquet 之间的性能不同,是因为 parquet 具有列式存储,而 csv 具有纯文本格式。列式存储更适合实现较小的存储大小,但从数据帧读取纯文本速度更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-22
    • 2018-11-21
    • 2020-08-21
    • 1970-01-01
    • 2020-01-31
    • 2020-11-09
    • 2017-03-28
    相关资源
    最近更新 更多