EMR-Spark正在缓慢地将具有字符串数组的DataFrame写入S3

问题描述 投票:2回答:1

我正在尝试从EMR-Spark向S3写入数据帧,并且看到一些非常缓慢的写入时间,其中写入占据了脚本总运行时间(〜80%)。对于它的价值,我已经尝试了.csv.parquet格式,但似乎没有什么不同。

我的数据可以用两种方式格式化,这是首选格式:

ID:StringType | ArrayOfIDs:ArrayType

((第一列数字中的唯一ID数以百万计。ArrayOfIDs包含GUID格式的字符串,并且可以包含〜100-100,000个元素中的任何一个)

将第一个表格写到S3的速度非常慢。对于它的价值,我尝试将mapreduce.fileoutputcommitter.algorithm.version设置为2,如下所述:https://issues.apache.org/jira/browse/SPARK-20107无效。

但是我的数据也可以格式化为邻接列表,如下所示:

ID1:StringType | ID2:StringType

这似乎可以更快地写入S3,但是我不知为什么。这是我的具体问题:

    COPY命令将其加载到Postgres中)。如果有更好的选择将这些数据帧放入RDS Postgres,我不愿意使用S3作为中间存储。
  • 我不知道为什么带有字符串数组的第一个架构写时这么慢。实际上,由于从第一列中消除了ID重复,因此写入的总数据实际上远远少于第二个方案。理解这种行为也将很高兴。

postgresql apache-spark amazon-s3 amazon-emr amazon-rds-aurora
1个回答
0
投票
这是我现在正在做的事情:

    将数据写入HDFS(顺便说一下,邻接列表与数组的写入速度现在符合我的期望。)>] >>
  • 从HDFS,使用EMR的s3-dist-cp实用工具将数据批量写入S3(对于数组类型的数据,这似乎也表现合理)。]]

  • aws_s3.table_import_from_s3扩展名将数据带入Aurora Postgres。
© www.soinside.com 2019 - 2024. All rights reserved.