从 EMR Spark 处理 s3 gzip 文件的有效方法

Posted

技术标签:

【中文标题】从 EMR Spark 处理 s3 gzip 文件的有效方法【英文标题】:Efficient way to work in s3 gzip file from EMR Spark 【发布时间】:2017-05-07 08:51:46 【问题描述】:

我在 S3 中有一个 10GB 的 gzip 压缩文件,我需要在 EMR Spark 中处理它。 我需要加载它,进行完整的外部连接并将其写回 S3。 我完全外部连接的数据是我想保存为 parquet 的目标数据集。

之前无法使输入文件拼接(因为来自第三方),只能将压缩改成bz2。

任何建议如何使使用输入文件的过程最有效? 目前仅使用 spark.read.csv 需要很长时间并且只运行一项任务,因此无法分发。

【问题讨论】:

【参考方案1】:

在执行连接之前,将步骤 1 设为读取文件并将其写回为 snappy 加密 parquet 的单工作人员操作。一旦这样写,您就有了一种可以拆分为联接的格式。

【讨论】:

【参考方案2】:

我建议在存储桶所在的同一区域启动一个 EC2 实例,下载 10GB 文件,解压缩,然后将其上传回 S3。使用 aws-cli 总共只需要大约 15 分钟。 例如:

aws s3 sync s3://bucket_name/file.txt.gz .;

gunzip file.txt.gz;

aws s3 sync file.txt s3://bucket_name/;

【讨论】:

有效,但您仍然可以从 S3 中的 .snappy 编码数据中获益,因为您每 GB 支付的费用更少,Spark 将愉快地读取 snappy 编码的 orc/parquet 数据。在你的 spark 集群中一次性完成它可以让你练习使用 Spark 处理这些东西。真的,您也应该从 .CSV 转换为其中一种格式

以上是关于从 EMR Spark 处理 s3 gzip 文件的有效方法的主要内容,如果未能解决你的问题,请参考以下文章

来自EMR / Spark的S3写入速度非常慢

来自 EMR/Spark 的 S3 写入时间极慢

EMR 上 Spark 中的 S3 减速错误

使用 403 写入 S3 时,在 EMR 上运行的 Spark 偶尔会失败

Amazon emr:最佳压缩/文件格式

EMR 5.28 无法在 s3 上加载镶木地板文件