apache-spark - 有什么方法可以使用 spark 从 s3 并行读取多个 Parquet 路径?

标签 apache-spark hadoop amazon-s3 parquet

我的数据存储在不同路径下的 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/

相关文章:

PHP - 使用 AWS4-HMAC-SHA256 孟买服务器将文件上传到 S3 存储桶

ios - 使用 ios-aws-sdk 是否通过 SSL 传递所有内容

amazon-web-services - S3 默认使用哪个 Glacier 保管库?

apache-spark - Spark ML - MulticlassClassificationEvaluator - 我们可以通过每个类标签获得精度/召回率吗?

scala - Spark dataframe写方法写很多小文件

date - 配置单元未检测到时间戳格式

python - pyspark 试图检索具有相同 id 的行

java - 如何将数值和分类特征传递给 Apache Spark 中的 RandomForestRegressor : MLlib in Java?

apache-spark - Pyspark - 根据时间戳值加入时间戳窗口

hadoop - 在 ZooKeeper 中使用 Zab 协议(protocol)进行广播