我在S3存储桶上有几千个压缩的CSV文件,每个文件大小约为30MB(解压缩后大约120-160MB),我想用spark处理它。
在我的spark工作中,我正在对每一行进行简单的过滤器选择查询。
分区Spark时将文件分成两个或多个部分,然后为每个分区创建任务。每项任务大约需要1分钟才能完成处理125K记录。我想避免在多个任务中对单个文件进行分区。
有没有办法获取文件和分区数据,以便每个任务在一个完整的文件上工作,即任务数=输入文件数。?
答案 0 :(得分:0)
以及使用spark选项,你可以告诉s3a文件系统客户端告诉它告诉Spark,S3中文件的“块大小”是128 MB。默认值为32 MB,足够接近您的“大约30 MB”数字,火花可能会将文件分成两部分
spark.hadoop.fs.s3a.block.size 134217728
使用wholeTextFiles()操作虽然
更安全