我正在尝试从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,但是我不知为什么。这是我的具体问题:
我不知道为什么带有字符串数组的第一个架构写时这么慢。实际上,由于从第一列中消除了ID重复,因此写入的总数据实际上远远少于第二个方案。理解这种行为也将很高兴。
从HDFS,使用EMR的s3-dist-cp实用工具将数据批量写入S3(对于数组类型的数据,这似乎也表现合理)。]]
aws_s3.table_import_from_s3
扩展名将数据带入Aurora Postgres。