【发布时间】:2016-07-21 01:47:57
【问题描述】:
使用 Spark 将文件写入 HDFS 时,在不使用分区的情况下速度非常快。取而代之的是,当我使用分区写入文件时,写入延迟会增加约 24 倍。
对于同一个文件,不分区写入大约需要 600 毫秒。按 ID 写入分区(将生成 1.000 个分区,因为文件中有 1.000 个 id)大约需要 14 秒。
你们中的一些人是否有过编写分区文件需要很长时间的经历?造成这种情况的根本原因是什么,也许 Spark 需要为每个分区创建 1.000 个文件夹和文件? 您知道如何加快速度吗?
val myRdd = streamedRdd.map { case ((id, metric, time), value) => Record(id, metric, getEpoch(time), time, value) }
val df = myRdd.toDF
df.write.mode(SaveMode.Append)
.partitionBy("id")
.parquet(path)
【问题讨论】:
-
能否包含您使用的代码?
标签: hadoop apache-spark hdfs parquet hadoop-partitioning