You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,6 +27,7 @@ Avoid fully-qualified class names within the code, always add imports.
27
27
Avoid object access and boxing as much as possible. Always prefer primitive access also if it means several similar methods.
28
28
Before writing new code, search for existing patterns in the same class/package that accomplish the same thing (e.g., the DRY principle). Extract repeated logic into helper methods within the same class rather than duplicating it. When a pattern appears multiple times, consider consolidating it into a single well-named method with overloads if needed.
29
29
Be conservative with base class refactoring. Do not pull implementation details up into abstract base classes unless the logic is truly identical across all subclasses with no foreseeable divergence. Shared helpers are better than shared template methods when subclasses may need different control flow.
The `hardwood-s3` module adds support for reading Parquet files directly from Amazon S3. Add it as a dependency alongside `hardwood-core`:
482
+
The `hardwood-s3` module adds support for reading Parquet files from Amazon S3 and S3-compatible services (Cloudflare R2, GCP Cloud Storage via HMAC keys, MinIO).
483
483
484
484
```xml
485
485
<dependency>
@@ -488,18 +488,21 @@ The `hardwood-s3` module adds support for reading Parquet files directly from Am
For the full AWS credential chain (env vars, `~/.aws/credentials`, EC2/ECS instance profile, SSO, web identity), add the optional `hardwood-aws-auth` module:
When a custom endpoint is set, region can be omitted — `S3Source` uses a default for signing since S3-compatible services don't use the region for routing.
586
+
536
587
Column projection, row group filtering, and all other reader features work transparently with S3 files. Hardwood minimizes S3 requests by pre-fetching the file footer on open and coalescing column chunk reads within each row group.
537
588
538
589
### Reading into Avro GenericRecord
@@ -935,7 +986,8 @@ Hardwood is organized into public API packages and internal implementation packa
|`dev.hardwood.aws.auth`|**Public API**| Bridges the AWS SDK credential chain to Hardwood's `S3CredentialsProvider` (`hardwood-aws-auth` module, optional). |
939
991
|`dev.hardwood.jfr`|**Public API**| JFR event types emitted during file reading, decoding, and pipeline operations. |
940
992
|`dev.hardwood.internal.*`|**Internal**| Implementation details — not part of the public API and may change without notice. |
941
993
@@ -1153,8 +1205,6 @@ The solution differs by codec:
1153
1205
1154
1206
`netty-buffer` (an optional dependency of `brotli4j`) is declared explicitly at compile scope so that GraalVM can resolve the `ByteBufUtil` reference in `brotli4j`'s `DirectDecompress` class during image analysis.
1155
1207
1156
-
Container builds use Mandrel's `--link-at-build-time`, which applies stricter type resolution: all reachable bytecode must have its full type hierarchy resolvable at build time. Netty's `Log4JLoggerFactory` references `org.apache.log4j.Logger` (provided by the `log4j-1.2-api` bridge artifact), which in turn references `org.apache.logging.log4j.core.LogEvent` from `log4j-core`. Both are therefore declared at compile scope in `cli/pom.xml` so that GraalVM can resolve the full chain during container builds.
0 commit comments