我有一个大约10个平面文件的应用程序,每个文件的价值超过200MM +记录.业务逻辑涉及按顺序连接所有这些逻辑.
我的环境:1个主站 - 3个从站(用于测试我为每个节点分配了1GB内存)
大多数代码只针对每个连接执行以下操作
RDD1 = sc.textFile(file1).mapToPair(..)
RDD2 = sc.textFile(file2).mapToPair(..)
join = RDD1.join(RDD2).map(peopleObject)
Run Code Online (Sandbox Code Playgroud)
任何调整建议,如重新分区,并行化......?如果是这样,有什么最佳做法可以提出重新分配的好数字?
使用当前配置,该作业需要一个多小时,我看到几乎每个文件的shuffle写入> 3GB
我正在尝试从AWS S3读取文件并使用Spring Batch处理它:
Spring Itemreader可以处理此任务吗?如果是这样,我如何将凭据传递给S3客户端并配置我的spring xml来读取一个或多个文件
<bean id="itemReader" class=""org.springframework.batch.item.file.FlatFileItemReader"">
<property name="resource" value=""${aws.file.name}"" />
</bean>
Run Code Online (Sandbox Code Playgroud)