Skip to content
Draft
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
1917adc
fix: honor the S3 profile name and file and Hadoop's addressing mode …
dwsmith1983 Sep 12, 2026
f9c83d2
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 14, 2026
80e1eb9
fix: apply the S3 profile keys only to Hadoop's profile provider and …
dwsmith1983 Sep 14, 2026
8ae6b67
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 14, 2026
3f66db9
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 14, 2026
0c76e6c
fix: keep dotted buckets path-style over HTTPS and read only the cred…
dwsmith1983 Sep 15, 2026
f9b1338
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 15, 2026
8652a81
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 15, 2026
31fafaf
fix: decide dotted-bucket addressing by the endpoint scheme and forwa…
dwsmith1983 Sep 15, 2026
f3758e5
fix: resolve Hadoop's default credentials file on the executor at pla…
dwsmith1983 Sep 16, 2026
629d913
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 16, 2026
a5f32c1
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 17, 2026
7b95c8f
docs: format the S3 credential provider table with prettier
dwsmith1983 Sep 17, 2026
1f2858e
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 17, 2026
a267c96
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 17, 2026
11e4013
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 18, 2026
0bf261e
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 18, 2026
59d3d8e
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 19, 2026
6204f20
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 19, 2026
d852a42
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 19, 2026
bbfc87b
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 20, 2026
1252647
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 20, 2026
cf3b5bc
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 21, 2026
7927138
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 22, 2026
6297815
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 22, 2026
c552066
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 22, 2026
b784a68
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 22, 2026
d98aaea
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 23, 2026
7ccbb58
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 23, 2026
b30ce03
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 24, 2026
6b501a8
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 24, 2026
89c69fc
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 24, 2026
3bc3cdb
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 24, 2026
b622ac4
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 24, 2026
8e3fc00
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 24, 2026
0675a77
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 25, 2026
6224b64
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 25, 2026
4d37527
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 25, 2026
d31577a
fix: keep path-style addressing for buckets the SDK cannot virtual-host
dwsmith1983 Sep 25, 2026
75e3a03
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 25, 2026
f14b0b1
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 25, 2026
7622894
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 25, 2026
e071485
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 26, 2026
eeae22d
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 26, 2026
e9bd183
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 27, 2026
24e9217
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Sep 27, 2026
b636fcb
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 28, 2026
82472bf
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 28, 2026
167506c
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 28, 2026
402227d
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 29, 2026
78dd798
docs: upgrade-guide entry for S3 addressing, Hadoop version for the p…
dwsmith1983 Sep 29, 2026
30a1e38
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 29, 2026
7a20705
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 29, 2026
31dea6e
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 29, 2026
4a53d90
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 30, 2026
dca2fdb
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 30, 2026
a8a74b4
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Sep 30, 2026
46a9357
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 1, 2026
c5f4fb3
fix: resolve the STS region from the selected Hadoop profile
dwsmith1983 Oct 3, 2026
db7a9ac
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 3, 2026
7a50d01
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 3, 2026
84f8545
fix: send each role's STS request to its own region, as Hadoop's prof…
dwsmith1983 Oct 3, 2026
c559446
docs: move the S3 addressing entry to 1.2.0 and cover reads with no e…
dwsmith1983 Oct 3, 2026
aa73a0d
fix: resolve Hadoop's profile provider through Hadoop's own provider …
dwsmith1983 Oct 3, 2026
af0ced9
build: use hadoop-aws 3.4.2 for the default Spark 4.1 build
dwsmith1983 Oct 3, 2026
177f019
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 4, 2026
5f68625
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 5, 2026
19ff59f
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 6, 2026
76ed249
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 6, 2026
6227128
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 7, 2026
4df1013
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 7, 2026
143ea1d
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 7, 2026
1315ccb
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 8, 2026
9dd21c6
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 9, 2026
dbb3cf5
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 9, 2026
f62f26f
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 10, 2026
57b894e
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 11, 2026
06d10d0
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 11, 2026
4b4d454
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 11, 2026
2363cb7
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 11, 2026
2ee0419
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 11, 2026
9991de1
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 12, 2026
ec27650
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 12, 2026
b05314c
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 12, 2026
ee374f8
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 13, 2026
259a7a9
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 13, 2026
2e61f94
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 14, 2026
b69d207
fix: probe a bucket's region path-style when it cannot be virtual-hosted
dwsmith1983 Oct 14, 2026
96d34e2
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 15, 2026
59e775a
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 15, 2026
676def5
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 16, 2026
6a01734
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 16, 2026
a0fe5f9
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 17, 2026
b56519e
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 17, 2026
0875567
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 17, 2026
e69fd13
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 18, 2026
702b503
Merge branch 'main' into fix/s3-profile-and-virtual-hosted
dwsmith1983 Oct 19, 2026
1f81172
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 20, 2026
322f92e
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 20, 2026
6689ca5
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 21, 2026
a9044c7
docs: keep only the comments that explain S3 addressing and profile r…
dwsmith1983 Oct 22, 2026
93052ec
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 22, 2026
3999b4c
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 23, 2026
0970ba1
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 23, 2026
9c43ef7
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 24, 2026
9d1fca3
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 25, 2026
8eb5b67
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 26, 2026
968ba10
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 27, 2026
b4aeada
Merge remote-tracking branch 'origin/main' into fix/s3-profile-and-vi…
dwsmith1983 Oct 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 23 additions & 12 deletions docs/source/user-guide/latest/datasources.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,18 +218,19 @@ installed.

AWS credential providers can be configured using the `fs.s3a.aws.credentials.provider` configuration. The following table shows the supported credential providers and their configuration options:

| Credential provider | Description | Supported Options |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider` | Access S3 using access key and secret key | `fs.s3a.access.key`, `fs.s3a.secret.key` |
| `org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider` | Access S3 using temporary credentials | `fs.s3a.access.key`, `fs.s3a.secret.key`, `fs.s3a.session.token` |
| `org.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider` | Access S3 using AWS STS assume role | `fs.s3a.assumed.role.arn`, `fs.s3a.assumed.role.session.name` (optional), `fs.s3a.assumed.role.credentials.provider` (optional) |
| `org.apache.hadoop.fs.s3a.auth.IAMInstanceCredentialsProvider` | Access S3 using EC2 instance profile or ECS task credentials (tries ECS first, then IMDS) | None (auto-detected) |
| `org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider`<br/>`com.amazonaws.auth.AnonymousAWSCredentials`<br/>`software.amazon.awssdk.auth.credentials.AnonymousCredentialsProvider` | Access S3 without authentication (public buckets only) | None |
| `com.amazonaws.auth.EnvironmentVariableCredentialsProvider`<br/>`software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider` | Load credentials from environment variables (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`) | None |
| `com.amazonaws.auth.InstanceProfileCredentialsProvider`<br/>`software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider` | Access S3 using EC2 instance metadata service (IMDS) | None |
| `com.amazonaws.auth.ContainerCredentialsProvider`<br/>`software.amazon.awssdk.auth.credentials.ContainerCredentialsProvider`<br/>`com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper` | Access S3 using ECS task credentials | None |
| `com.amazonaws.auth.WebIdentityTokenCredentialsProvider`<br/>`software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider` | Authenticate using web identity token file | None |
| `com.amazonaws.auth.profile.ProfileCredentialsProvider`<br/>`software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider` | Authenticate using a named profile from the local AWS credentials file | None |
| Credential provider | Description | Supported Options |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider` | Access S3 using access key and secret key | `fs.s3a.access.key`, `fs.s3a.secret.key` |
| `org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider` | Access S3 using temporary credentials | `fs.s3a.access.key`, `fs.s3a.secret.key`, `fs.s3a.session.token` |
| `org.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider` | Access S3 using AWS STS assume role | `fs.s3a.assumed.role.arn`, `fs.s3a.assumed.role.session.name` (optional), `fs.s3a.assumed.role.credentials.provider` (optional) |
| `org.apache.hadoop.fs.s3a.auth.IAMInstanceCredentialsProvider` | Access S3 using EC2 instance profile or ECS task credentials (tries ECS first, then IMDS) | None (auto-detected) |
| `org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider`<br/>`com.amazonaws.auth.AnonymousAWSCredentials`<br/>`software.amazon.awssdk.auth.credentials.AnonymousCredentialsProvider` | Access S3 without authentication (public buckets only) | None |
| `com.amazonaws.auth.EnvironmentVariableCredentialsProvider`<br/>`software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider` | Load credentials from environment variables (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`) | None |
| `com.amazonaws.auth.InstanceProfileCredentialsProvider`<br/>`software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider` | Access S3 using EC2 instance metadata service (IMDS) | None |
| `com.amazonaws.auth.ContainerCredentialsProvider`<br/>`software.amazon.awssdk.auth.credentials.ContainerCredentialsProvider`<br/>`com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper` | Access S3 using ECS task credentials | None |
| `com.amazonaws.auth.WebIdentityTokenCredentialsProvider`<br/>`software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider` | Authenticate using web identity token file | None |
| `org.apache.hadoop.fs.s3a.auth.ProfileAWSCredentialsProvider` | Authenticate using a named profile from the local AWS credentials file | `fs.s3a.auth.profile.name` (optional), `fs.s3a.auth.profile.file` (optional); Hadoop applies both only to this provider |
| `com.amazonaws.auth.profile.ProfileCredentialsProvider`<br/>`software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider` | Authenticate using the SDK's default profile; Hadoop constructs these without its configuration, so the profile keys are not applied on either side | None |

Multiple credential providers can be specified in a comma-separated list using the `fs.s3a.aws.credentials.provider` configuration, just as Hadoop AWS supports. If `fs.s3a.aws.credentials.provider` is not configured, Hadoop S3A's default credential provider chain will be used. All configuration options also support bucket-specific overrides using the pattern `fs.s3a.bucket.{bucket-name}.{option}`.

Expand All @@ -246,6 +247,16 @@ Beyond credential providers, Comet's Parquet scan supports additional S3 configu

All configuration options support bucket-specific overrides using the pattern `fs.s3a.bucket.{bucket-name}.{option}`.

`fs.s3a.path.style.access` selects how the bucket is placed in the request URL: virtual-hosted
addressing (the default, `false`) sends requests to `https://<bucket>.<endpoint>`, while path-style
(`true`) sends them to `https://<endpoint>/<bucket>`, which many S3-compatible services such as MinIO
require. An endpoint whose host is an IP address is always addressed path-style, as the AWS SDK does,
and so is a bucket whose name contains a dot over HTTPS, since the dotted host falls outside S3's
wildcard certificate.
Earlier Comet releases addressed every custom `fs.s3a.endpoint` path-style whatever the flag said,
so a MinIO or Ceph RGW deployment that never set the flag now sends requests to `<bucket>.<host>`
and fails with a DNS error; set `fs.s3a.path.style.access=true` to keep the previous behavior.

### S3-Compliant Filesystem Schemes

Some environments front an S3-compatible service (MinIO, Ceph RGW, Cloudflare R2, Wasabi, and
Expand Down
1 change: 1 addition & 0 deletions native/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions native/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ thiserror = "2"
object_store = { version = "0.13.2", features = ["gcp", "azure", "aws", "http"] }
url = "2.2"
aws-config = "1.8.18"
aws-runtime = "1.9.2"
aws-credential-types = "1.2.13"
iceberg = { git = "https://github.com/apache/iceberg-rust", rev = "665c64e48e8d33797ecb1a421f327edd9b024879" }
iceberg-storage-opendal = { git = "https://github.com/apache/iceberg-rust", rev = "665c64e48e8d33797ecb1a421f327edd9b024879", features = ["opendal-memory", "opendal-fs", "opendal-s3", "opendal-gcs", "opendal-oss", "opendal-azdls"] }
Expand Down
1 change: 1 addition & 0 deletions native/core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ datafusion-comet-shuffle = { workspace = true }
object_store = { workspace = true }
url = { workspace = true }
aws-config = { workspace = true }
aws-runtime = { workspace = true }
aws-credential-types = { workspace = true }
parking_lot = "0.12.5"
# Optional Delta Lake contrib (enabled by the `contrib-delta` feature). Source lives
Expand Down
9 changes: 9 additions & 0 deletions native/core/src/execution/jni_api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,9 @@ use crate::execution::spark_config::{
COMET_TRACING_ENABLED, SPARK_EXECUTOR_CORES,
};
use crate::parquet::encryption_support::{CometEncryptionFactory, ENCRYPTION_FACTORY_ID};
use crate::parquet::objectstore::s3::{
ExecutorObjectStoreDefaults, COMET_DEFAULT_PROFILE_FILE_KEY,
};
use datafusion_comet_proto::spark_operator::operator::OpStruct;
use log::{info, warn};
use std::sync::OnceLock;
Expand Down Expand Up @@ -758,6 +761,12 @@ fn prepare_datafusion_session_context(
session_config.set_str("datafusion.execution.parquet.reorder_filters", "true");
}

// The executor JVM resolves the credentials file Hadoop's profile provider would read on
// this executor; scans overlay it onto their object store options.
session_config = session_config.with_extension(Arc::new(ExecutorObjectStoreDefaults {
default_profile_file: spark_config.get(COMET_DEFAULT_PROFILE_FILE_KEY).cloned(),
}));

// Pass through DataFusion configs from Spark.
// e.g: spark-shell --conf spark.comet.datafusion.sql_parser.parse_float_as_decimal=true
// becomes datafusion.sql_parser.parse_float_as_decimal=true
Expand Down
7 changes: 5 additions & 2 deletions native/core/src/execution/planner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ use iceberg::expr::Bind;
use crate::execution::operators::ExecutionError::GeneralError;
use crate::execution::shuffle::{CometPartitioning, CompressionCodec};
use crate::execution::spark_plan::SparkPlan;
use crate::parquet::objectstore::s3::apply_executor_object_store_defaults;
use crate::parquet::objectstore::s3_blob_fs_support::normalize_object_store_url;
use crate::parquet::parquet_support::prepare_object_store_with_configs;
use datafusion::common::scalar::ScalarStructBuilder;
Expand Down Expand Up @@ -1698,11 +1699,12 @@ impl PhysicalPlanner {
.map(|f| f.file_path.clone())
.expect("partition should have files after empty check");

let object_store_options: HashMap<String, String> = common
let mut object_store_options: HashMap<String, String> = common
.object_store_options
.iter()
.map(|(k, v)| (k.clone(), v.clone()))
.collect();
apply_executor_object_store_defaults(&self.session_ctx, &mut object_store_options);
let (object_store_url, _, object_store_backend) =
prepare_object_store_with_configs(
self.session_ctx.runtime_env(),
Expand Down Expand Up @@ -1750,11 +1752,12 @@ impl PhysicalPlanner {
convert_spark_types_to_arrow_schema(scan.partition_schema.as_slice());
let projection_vector: Vec<usize> =
scan.projection_vector.iter().map(|i| *i as usize).collect();
let object_store_options: HashMap<String, String> = scan
let mut object_store_options: HashMap<String, String> = scan
.object_store_options
.iter()
.map(|(k, v)| (k.clone(), v.clone()))
.collect();
apply_executor_object_store_defaults(&self.session_ctx, &mut object_store_options);
let one_file = scan
.file_partitions
.first()
Expand Down
Loading