Мне нужна помощь, я предоставлю часть моего кода
Код: Выделить всё
public Single Descarga(int pageSize, String sortField, String sortOrder) {
return Single.defer(() -> {
final var fileName = LocalDate.now ()+compress (sortField+sortOrder+pageSize) +".json.gz";
final var path = UUID.randomUUID () + "-" + fileName;
final var fileOutputStream = new FileOutputStream ( path );
final var gzipOutputStream = new GZIPOutputStream ( fileOutputStream );
final var mapper = DatabindCodec.mapper ();
final var jsonGenerator = mapper.getFactory ().createGenerator ( gzipOutputStream, JsonEncoding.UTF8 );
jsonGenerator.writeStartArray ();
log.info ( "Selected pageSize {}", pageSize );
log.info ( "sorted by {}", sortField );
return select ( pageSize, sortField, sortOrder )
.toFlowable ()
.map ( row -> row.getString ( 0 ) )
.doOnNext ( node->mapper.writeValue ( jsonGenerator,node ) )
.flatMapSingle ( ds->service.prtRant ( JsonArray.of ( ds ) ) )
.ignoreElements ()
.doOnTerminate ( ()->{
jsonGenerator.writeEndArray ();
jsonGenerator.close ();
gzipOutputStream.close ();
fileOutputStream.close ();
} )
.toSingleDefault ( FileResponse.builder ()
.path ( path )
.fileName ( fileName )
.build ());
});
}
Код: Выделить всё
public Single select(int pageSize, String sortField, String sortOrder) {
final var statement = QueryBuilder.selectFrom ( "marketplace", "bankgateway_transaction" )
.json ()
.all ()
.build ()
.setPageSize ( pageSize );
final var fetch= cqlSessionSingle.flatMap ( cqlSession -> Single.fromFuture ( cqlSession.executeAsync ( statement ).toCompletableFuture ()))
.map(AsyncPagingIterable::currentPage)
.flatMapObservable(Observable::fromIterable)
.map(row -> row.getString(0))
.toList();
final var partitioning = fetch.flatMap ( data->service.prtRant ( JsonArray.of ( data ) ) ).map(JsonArray::new);
return partitioning;
}
и это метод разделения
Код: Выделить всё
private Single pTinter(Long count) {
final var parZ = cPZ(count);
final var tPar = cTP(count, parZ);
return Single.zip(tPar,parZ, (total, size) -> {
//Implementacion de la logica de particion
List PartitionId = new ArrayList();
for (long i = 0; i < total; i++) {
PartitionId.add(i*size);
}
// Ordenar las particiones según el criterio de clasificación proporcionado
return new ArrayList ( PartitionId );
});
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... downloaded