Raptor read and write with delta delete functionality#13756
Raptor read and write with delta delete functionality#13756highker merged 5 commits intoprestodb:masterfrom
Conversation
|
The second PR from #13248 |
54f964b to
0246db9
Compare
jessesleeping
left a comment
There was a problem hiding this comment.
Reviewed "Enhance RaptorSplit and enable delta read".
As reviewed before, the general direction and main logic LGTM. Comments on minor changes.
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcPageSource.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcPageSource.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcPageSource.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcPageSource.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcStorageManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/organization/ShardCompactor.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/organization/ShardCompactor.java
Outdated
Show resolved
Hide resolved
jessesleeping
left a comment
There was a problem hiding this comment.
Reviewed "Add delta delete functionality on worker". Generally looks good. Comments are around code refactoring.
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardRewriter.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardRewriter.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardRewriter.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardRewriter.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardRewriter.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/InplaceShardRewriter.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Compared to DeltaShardRewriter, InplaceShardRewriter seems to be more coupled with OrcStorageManager as it's originally part of OrcStorageManager. I suggest we can keep InplaceShardRewriter an embedded class of OrcStorageManageror an anonymous class.
There was a problem hiding this comment.
@highker what do you think of this suggestion?
presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorSplit.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorSplit.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorSplitManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DatabaseShardManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DatabaseShardManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcPageSource.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcStorageManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/organization/ShardCompactor.java
Outdated
Show resolved
Hide resolved
50703ba to
17c87fd
Compare
|
All known requests for change have been addressed. Put up a temp commit for refactor of OrcPageSource. Will merge it after review. |
4b9a761 to
17c87fd
Compare
|
rebase? |
17c87fd to
eb40f8f
Compare
jessesleeping
left a comment
There was a problem hiding this comment.
Reviewed "Commit protocol for rewrite delete, delta delete". LGTM with minor comments.
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/ShardManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/ShardManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/ShardManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/ShardManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DatabaseShardManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DatabaseShardManager.java
Outdated
Show resolved
Hide resolved
...to-raptor/src/main/java/com/facebook/presto/raptor/storage/organization/OrganizationJob.java
Outdated
Show resolved
Hide resolved
jessesleeping
left a comment
There was a problem hiding this comment.
Reviewed " Export statistics of delta delete". LGTM with minor refactoring suggestions.
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DatabaseShardManager.java
Outdated
Show resolved
Hide resolved
highker
left a comment
There was a problem hiding this comment.
OrcPageSource should not have fundamental surgery.
presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorMetadata.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorPageSourceProvider.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorSplit.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DatabaseShardManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DeltaInfoPair.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardRewriter.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcStorageManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardRewriter.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
This is not the right design. This file should remain (almost) unchanged. The only critical change to be made is on recordReader. That should be replaced by another page source (which inherits ConnectorPageSource) to represent the source data. Let me know if you want to chat in person.
There was a problem hiding this comment.
Can we chat in person today?
b659d83 to
4d54611
Compare
6be56fd to
df5dcc8
Compare
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DatabaseShardManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DatabaseShardManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DeltaInfoPair.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DeltaInfoPair.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/ShardIterator.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcStorageManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcStorageManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcStorageManager.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardRewriter.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcPageSource.java
Outdated
Show resolved
Hide resolved
71718ce to
954a8dd
Compare
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/DeltaInfoPair.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
If this is only used by compaction, shall we move this with the compaction PR? Also, if this interface is only for delta delete, why do we need flag tableSupportsDeltaDelete? I think that can be removed.
There was a problem hiding this comment.
If this is only used by compaction, shall we move this with the compaction PR? Also, if this interface is only for delta delete, why do we need flag
tableSupportsDeltaDelete? I think that can be removed.
Actually this is a legacy problem.
We write this replaceShardUuids as a function to completely replace the old replaceShardUuids, that's why we need tableSupportsDeltaDelete in this new function.
But during the process, we found ourselves insecure of touching the old logical path, so we restore the old replaceShardUuids and keep these two together.
And we build tests around this new method and everything.
We will remove the old method once we feel the feature is stable. I've already left comments above
// TODO: Will merge these new function with old function once new feature is stable
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardLoader.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardRewriter.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
a try is needed to avoid file descriptor leak. Check other use cases.
There was a problem hiding this comment.
a
tryis needed to avoid file descriptor leak. Check other use cases.
I think as long as we close OrcDataSource dataSource, we wouldn't have file descriptor leak.
So in above, we use
try (OrcDataSource dataSource = openShard(fileSystem, deltaShardUuid.get(), defaultReaderAttributes))
which will close the datasource once it encounters some exceptions
There was a problem hiding this comment.
You will miss closing all the stream readers. So use try to make sure it is closed properly.
There was a problem hiding this comment.
You will miss closing all the stream readers. So use
tryto make sure it is closed properly.
But I do see from other examples that they used OrcBatchRecordReader with OrcDataSource dataSource as well, and they only close dataSource
eg1:
OrcStorageManager
public ConnectorPageSource getPageSource
it uses try and catch and it only closes the dataSourcecloseQuietly(dataSource);
eg2:
OrcBatchPageSourceFactory
createOrcPageSource
orcDataSource.close();
There was a problem hiding this comment.
Because readers will be closed by ConnectorPageSource. In your case, no one can close the readers.
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcPageSource.java
Outdated
Show resolved
Hide resolved
8ac846d to
9ba31f5
Compare
presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorMetadata.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/RaptorSplit.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardLoader.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardLoader.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/DeltaShardLoader.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcPageSource.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcPageSource.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
You will miss closing all the stream readers. So use try to make sure it is closed properly.
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcUpdatablePageSource.java
Outdated
Show resolved
Hide resolved
presto-raptor/src/main/java/com/facebook/presto/raptor/storage/OrcUpdatablePageSource.java
Outdated
Show resolved
Hide resolved
9ba31f5 to
7bb94b0
Compare
highker
left a comment
There was a problem hiding this comment.
Please implement try for OrcBatchRecordReader recordReader = reader.createBatchRecordReader(. Otherwise LGTM
7bb94b0 to
c8375a3
Compare
Enable the ability to send tableSupportsDeltaDelete and deltaShardUuid from Coordinator to Workers. Enable delta read functionality.
Add delta delete functionality on coordinator
c8375a3 to
6ca3e6d
Compare
Uh oh!
There was an error while loading. Please reload this page.