从 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 文件的有效方法的主要内容,如果未能解决你的问题,请参考以下文章