S3 镶木地板写入 - 分区太多,写入速度慢



我有我的 scala spark 作业作为镶木地板文件写入 s3。到目前为止,它的60亿条记录,并将每天保持增长。根据用例,我们的 api 将根据 id 查询镶木地板。因此,为了使查询结果更快,我正在编写带有id上分区的镶木地板。但是,我们有1330360唯一的 ID,因此这会在写入时创建1330360镶木地板文件,因此写入步骤非常慢,写入过去 9 小时并且仍在运行。

output.write.mode("append").partitionBy("id").parquet("s3a://datalake/db/")

无论如何,我可以减少分区数量并仍然使读取查询更快吗?或者任何其他更好的方法来处理这种情况?谢谢。

编辑 : - id 是一个带有随机数的整数列。

您可以按 id 范围进行分区(您没有说任何关于 id 的内容,所以我不能建议具体的东西)和/或使用存储桶而不是分区 https://www.slideshare.net/TejasPatil1/hive-bucketing-in-apache-spark

最新更新