我的数据存储在不同路径下的 s3(parquet 格式)中,我正在使用 spark.read.parquet(pathes:_*)
以便将所有路径读取到一个数据帧中。
不幸的是,spark 是顺序读取 parquet 元数据(一个接一个路径),而不是并行读取。
spark 读取元数据后,数据本身将被并行读取。但是元数据部分 super 慢,而且机器没有得到充分利用。
有什么方法可以使用 spark 从 s3 并行读取多个 parquet 路径吗?
很高兴听到您对此的意见。
最佳答案
所以过了一段时间后,我发现我可以通过读取不同线程上的每个路径并合并结果来实现它。例如:
val paths = List[String]("a","b","c")
val parallelPaths = paths.par
parallelPaths.tasksupport = new ForkJoinTaskSupport(new scala.concurrent.forkjoin.ForkJoinPool(paths.length))
paths.map(path => spark.read.parquet(path)).reduce(_ union _)
关于apache-spark - 有什么方法可以使用 spark 从 s3 并行读取多个 Parquet 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63755158/