我正在使用Spring引导中的异步任务执行器来分割我的数百万条记录数据,块大小为1000,网格大小为10。 我使用前一步项目阅读器中的StepExecution获取分区数据的开始和结束索引(来自分区程序类),以便从数据库中获取特定的分区数据。
问题是只有一个分区正在被读写。
代表: 物品阅读器
beforeStep(StepExecution execution){
int startIndex = execution.getExecutionContext().getInt("startIndexValue")
int endIndex = execution.getExecutionContext().getInt("endIndexValue")
List testDataList = getTestDatabetween(startIndex, endIndex);
}
项目阅读器 迭代testData List并将testData值返回到writer
testData read()
{
if(!testData.isEmpty()){
testData = testDataList.get(testIndex);
testIndex++;
}
return testData;
}
TestData = Partition1,Partition2,Partition3
只读取,处理和写入最后一个Partition3分区。
我希望同时读取所有分区。
答案 0 :(得分:0)
这很可能是读者的线程安全问题。测试此方法的一种方法是将gridsize减少为1并查看它是否处理。
请务必确保它位于W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
W/System.err: java.util.concurrent.ExecutionException: com.google.firebase.auth.FirebaseAuthInvalidUserException: The user's credential is no longer valid. The user must sign in again.
W/System.err: at com.google.android.gms.tasks.Tasks.zzb(Unknown Source)
W/System.err: at com.google.android.gms.tasks.Tasks.await(Unknown Source)
W/System.err: at *private*.OAuth2Utilities.getFundaForOAuth2(OAuth2Utilities.java:52)
W/System.err: at *private*.AsyncTask.PostFetchAsyncTask.doInBackground(PostFetchAsyncTask.java:60)
W/System.err: at *private*.AsyncTask.PostFetchAsyncTask.doInBackground(PostFetchAsyncTask.java:48)
W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:288)
W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err: at java.lang.Thread.run(Thread.java:818)
W/System.err: Caused by: com.google.firebase.auth.FirebaseAuthInvalidUserException: The user's credential is no longer valid. The user must sign in again.
W/System.err: at com.google.android.gms.internal.zzago.zzew(Unknown Source)
W/System.err: at com.google.android.gms.internal.zzagl$zzg.zza(Unknown Source)
W/System.err: at com.google.android.gms.internal.zzagw.zzex(Unknown Source)
W/System.err: at com.google.android.gms.internal.zzagw$zza.onFailure(Unknown Source)
W/System.err: at com.google.android.gms.internal.zzagr$zza.onTransact(Unknown Source)
W/System.err: at android.os.Binder.execTransact(Binder.java:446)
,以确保为每个分区获取新实例。
scope="step"