s3镶木地板写 - 分区太多,写作慢

时间:2018-05-06 08:35:38

标签: scala apache-spark amazon-s3 amazon-emr parquet

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以按ID范围进行分区(您没有说出任何关于ID的信息,因此我无法建议具体内​​容)和/或使用存储桶代替分区https://www.slideshare.net/TejasPatil1/hive-bucketing-in-apache-spark