-
Notifications
You must be signed in to change notification settings - Fork 92
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: integrate iceberg initial load support via jvm grpc #1792
base: main
Are you sure you want to change the base?
Conversation
- add quarkus with grpc for jvm - expose required routes for appends, changes and setup tables
e1195eb
to
27f7fb5
Compare
- Introduce significant enhancements to Iceberg support, including the handling of Iceberg tables and improved JVM compatibility. - Refactor codebase to improve readability and maintainability, including the extraction of common functionality into separate methods and the removal of redundant code. - Implement new methods for handling Iceberg tables, including table creation, record appending, and table dropping. - Introduce a new `RecordWriterFactory` to manage record writing tasks. - Update `build.gradle` and `application.yaml` files to reflect changes in the project setup. - Remove unused test files and update the logging system for better debugging. - Update Go files in the `flow/connectors/iceberg` directory to improve Iceberg handling. - Add new protobuf messages in `protos/peers.proto` for Google Cloud Storage (GCS) configuration. - Update `protos/flow-jvm.proto` to include an idempotency key in the `AppendRecordsRequest` message.
079d627
to
e008421
Compare
e008421
to
4c88206
Compare
PR description should outline why gradle files need to be brought in |
protos/peers.proto
Outdated
optional int32 client_pool_size = 4; | ||
optional bool cache_enabled = 5; | ||
// This helps in testing, where we can pass additional properties to the catalog | ||
// map<string, string> additional_properties = 6; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should this be kept in final code?
- additionally add ci build actions
10f7d7f
to
9b93886
Compare
9b93886
to
f72adde
Compare
- Modify the condition in IcebergService to correctly check if a namespace exists before creating it.
…y footprint (#1835) This uses streams instead of sending all the records in 1 go.
@@ -0,0 +1,97 @@ | |||
#### |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what's the point of the Dockerfiles in this directory?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are generated by quarkus, have used them further for reference to create our own under stacks.
flow-jvm/src/main/java/io/peerdb/flow/jvm/RequestLoggingInterceptor.java
Outdated
Show resolved
Hide resolved
flow-jvm/src/main/java/io/peerdb/flow/jvm/iceberg/lock/LockManager.java
Outdated
Show resolved
Hide resolved
flow-jvm/src/main/java/io/peerdb/flow/jvm/iceberg/resource/IcebergResource.java
Show resolved
Hide resolved
![Screenshot 2024-06-15 at 1 28 50 AM](https://github.com/PeerDB-io/peerdb/assets/65964360/630b0ac8-7cdc-413d-a436-f8340bad3a45) TODO: - [x] Add required asterisk - [ ] Make validate and create work - [x] Test and fix the wiring of all fields to Flow API - [x] Add form validation and error toast - [x] Add tips and helpful links --------- Co-authored-by: Kunal Gupta <[email protected]>
- Add `AppendAlreadyDoneException` to handle specific scenario when append operation is already done - Enhance record appending process in `IcebergService` by introducing better error handling and more precise control flow
145ec44
to
237ac32
Compare
req *protos.GetTableSchemaBatchInput, | ||
) (*protos.GetTableSchemaBatchOutput, error) { | ||
// TODO implement me | ||
panic("implement me") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO, or remove implementing this interface
Currently Gradle is used for build and dev and additionally does the following (via Quarkus Tasks):
TODOS:
Table namespace supportplanned for later