the*_*oid 4 apache-spark apache-spark-sql pyspark
我读过一些资源,声称 Spark 读取操作通常是惰性的。但我运行了一些在 csv 读取步骤上花费很长时间的作业。然后我读到这篇文章说 csv read 是一个急切的操作[1]。您有比较明确的答案可以参考吗?谢谢你!
\n\n1. https://towardsdatascience.com/a-brief-introduction-to-pyspark-ff4284701873
\n\n\n\n尝试最小化急切操作:为了使管道尽可能可扩展,最好避免将完整数据帧拉入内存的急切操作。我\xe2\x80\x99ve 注意到读取 CSV 是一项急切的操作,我的解决方法是将数据帧保存为 parquet,然后从 parquet 重新加载它以构建更具可扩展性的管道。
\n
阅读源代码后,如果禁用 inferSchema 选项,则显示读取 CSV 是惰性的:
如果未使用函数指定模式
schema
并且inferSchema
启用了选项,则此函数将遍历输入一次以确定输入模式。
如果未使用函数指定架构
schema
并且inferSchema
禁用选项,则它将列确定为字符串类型,并且仅读取第一行以确定名称和字段数。
如果 enforceSchema 设置为
false
,则仅检查第一行中的 CSV 标头是否符合指定或推断的架构。
2021 年 7 月编辑:来源: https: //github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/DataFrameReader.scala#L560
归档时间: |
|
查看次数: |
2350 次 |
最近记录: |