【问题标题】:Reading from parquet is slower than csv -pyspark从 parquet 读取比 csv -pyspark 慢
【发布时间】:2021-05-19 02:18:23
【问题描述】:

我是 pySpark 的新手。我正在尝试优化程序在本地模式下的执行时间。我在某处读到将dataframe 保存到镶木地板,然后在对其进行任何转换之前再次加载它可以减少执行时间,尽管我不明白为什么。此外,在此过程中,我注意到从镶木地板加载所需的时间比从csv 加载的时间要长。在下面的示例中,我重新分区并合并了我的数据以最小化加载时间(8 个分区 - 数据大小:大约 400kB)。

我的主要问题是:关于如何提高程序性能以及为什么 parquet 的加载时间比 csv 更长?

这是一个例子

这是我的配置:

spark.driver.bindAddress: localhost
spark.ui.port: 4040
spark.driver.memory: "12g"
spark.driver.memoryOverhead: 4096
spark.sql.shuffle.partitions: 8
spark.default.parallelism: 8
spark.master: "local[8]"
# spark.sql.analyzer.failAmbiguousSelfJoin: false

【问题讨论】:

  • 我希望 parquet 的初始开销比 CSV 高一些。 400k 非常小,所以你可能会遇到这个问题。我很想看看更大文件的数字。
  • 但是在这个小 csv 上执行的查询会比同样大小的 parquet 花费更长的时间,对吧?
  • @VectorXY 对同一 Vector 的任何更新,我很想知道结果如何?

标签: apache-spark pyspark


【解决方案1】:

您无法判断从 parquet 读取比从 CSV 读取慢,仅运行一次就使用非常小的数据集。结果需要一致且公平,即:当您在本地计算机上运行时,您需要确保在阅读时没有其他任务正在运行(并占用内存)(那么,如果操作系统更新正在运行呢?阅读镶木地板时的背景)。我的建议是一遍又一遍地对其进行基准测试,如果可能的话,使用更大的数据集,在专用机器上运行而不会被任何其他任务等干扰

【讨论】:

  • 感谢您的输入,但我的问题是 spark 在读取之前会反序列化镶木地板格式,我想我在某处读到它不会在从 s3 目录读取 csv 文件时对其进行反序列化,但它确实用于镶木地板。因此,即使是大数据集,处理镶木地板也会更加耗时?请分享您对此的反馈,或者您有任何可以显示分析的链接
猜你喜欢
  • 2021-05-22
  • 2022-10-05
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多