从 EMR Spark 处理 s3 gzip 文件的有效方法
Efficient way to work in s3 gzip file from EMR Spark
我在 S3 中有一个 10GB 的 gzip 压缩文件,需要在 EMR Spark 中处理。
我需要加载它,进行完整的外部连接并将其写回 S3。
我全外连接的数据是我想保存为镶木地板的目标数据集。
之前的输入文件无法拼接(因为是第三方的),只能改压缩为bz2
有什么建议可以使输入文件的使用过程最高效吗?
目前仅使用 spark.read.csv 需要很长时间,并且 运行 只有一个任务,因此无法分发。
我建议在与存储桶相同的区域启动一个 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/;
在进行连接之前,将第 1 步设为读取文件并将其作为快速加密的镶木地板写回的单一工作人员操作。一旦这样写,你就有了一个可以拆分用于连接的格式。
我在 S3 中有一个 10GB 的 gzip 压缩文件,需要在 EMR Spark 中处理。 我需要加载它,进行完整的外部连接并将其写回 S3。 我全外连接的数据是我想保存为镶木地板的目标数据集。
之前的输入文件无法拼接(因为是第三方的),只能改压缩为bz2
有什么建议可以使输入文件的使用过程最高效吗? 目前仅使用 spark.read.csv 需要很长时间,并且 运行 只有一个任务,因此无法分发。
我建议在与存储桶相同的区域启动一个 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/;
在进行连接之前,将第 1 步设为读取文件并将其作为快速加密的镶木地板写回的单一工作人员操作。一旦这样写,你就有了一个可以拆分用于连接的格式。