是否有pyspark读取CSV文件的限制?



我对spark/pyspark比较陌生,所以非常感谢任何帮助。

目前我们有文件每小时被传送到Azure数据湖到一个文件目录,例如:

hour1.csvhour2.csvhour3.csv

我正在使用databricks读取文件目录中的文件,使用下面的代码:

sparkdf = spark.read.format(csv).option("recursiveFileLookup", "true").option("header", "true").schema(schema).load(file_location)

每个CSV文件大约5kb,并且都具有相同的模式。

我不确定的是如何扩展"spark.read";是什么?目前我们正在处理大约2000个这样的小文件,我担心正在处理的文件数量有限制。是否有限制,如最多5000个文件和我的代码以上断裂?

从我在网上看到的,我相信数据大小不是上面方法的问题,spark可以读取pb级的数据(相比之下,我们的数据总量仍然很小),但是没有提到它能够处理的文件数量-如果我错了,请告诉我。

任何解释都非常感谢。

谢谢

限制你的司机的内存。

当读取一个目录时,驱动程序列出它(取决于初始大小,它可能将列表并行化到执行器,但它以任何一种方式收集结果)。在有了文件列表之后,它为执行器创建要运行的任务。

考虑到这一点,如果列表太大而无法容纳驱动程序的内存,则会出现问题。

你总是可以增加驱动程序的内存空间来管理它,或者有一些预处理来合并文件(GCS有一个gsutil compose,可以合并文件而不需要下载它们)。

最新更新