diff --git a/seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/source/enumerator/AbstractSplitEnumerator.java b/seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/source/enumerator/AbstractSplitEnumerator.java index 199c56eb159..24bfe3bc133 100644 --- a/seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/source/enumerator/AbstractSplitEnumerator.java +++ b/seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/source/enumerator/AbstractSplitEnumerator.java @@ -108,7 +108,7 @@ protected void refreshPendingSplits() { private void addPendingSplits(Collection newSplits) { int numReaders = context.currentParallelism(); for (IcebergFileScanTaskSplit newSplit : newSplits) { - int ownerReader = newSplit.splitId().hashCode() % numReaders; + int ownerReader = ( newSplit.splitId().hashCode() & Integer.MAX_VALUE ) % numReaders;% numReaders; pendingSplits.computeIfAbsent(ownerReader, r -> new ArrayList<>()).add(newSplit); log.info("Assigning {} to {} reader.", newSplit, ownerReader); }