+-

我有一个spark作业,该作业会收到约100k个文件的列表,并每10分钟调用一次。这些文件在s3中。路径看起来像:
s3://<bucket>/<folder>/<file_name>
文件加载如下:
df = spark.read.option("mergeSchema", "true").schema(schema).parquet(*files)
在幕后,似乎spark对每个文件进行了LIST和HEAD API调用。这是非常浪费的,因为这些是files而不是directories,并且由于工作性质而被[保证]存在。 Ive查看了Spark代码库,看来,此行为是InMemoryFileIndex的一部分。有没有一种方法可以将spark配置为直接进行GET调用并跳过列表/标题调用?
我有一个spark作业,该作业会收到约100k个文件的列表,并每10分钟调用一次。这些文件在s3中。路径看起来像:s3:/// / 文件是...
0
投票
投票
这非常浪费,因为这些文件不是目录,并且由于作业的性质而保证存在。
这里的问题是文件系统层不知道“工作的本质”,因此它有时会自己进行探测
看起来也像InMemoryFileIndex.scala那样效率很低;它除了HDFS的一些硬编码位外,还执行自己的树形遍历,并且似乎确实重新扫描了刚刚列出的所有文件。
是的,正如开源项目所说,还有改进的余地。但是因为他们也倾向于说“请提交补丁”