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
{{ message }}
Repository navigation
Commit b01c168
Browse filesBrowse the repository at this point in the historyBrowse files
docs: update the user guide for the 1.1.0 release (#6168)
* docs: update the user guide for the 1.1.0 release
Sweep of the user guide against everything merged since 1.0.0 branched
(af534e0), per the release preparation step in the release process.
Correct statements that no longer match the code: the CI coverage table
(only Spark 4.1 is gated before merge since the non-default profiles
moved to the nightly run), the Spark 3.x Parquet limitations Comet has
long since closed, cast/JSON/regex/array notes that say "falls back"
where Comet now routes through the codegen dispatcher, S3 region
auto-detection, Iceberg NOT IN pushdown, tokio thread defaults, shuffle
and scan metric names, and a Kubernetes example that pointed at a
Java 11 / Spark 3.5 image and left Comet disabled for lack of off-heap
memory.
Remove known-divergence entries that 1.1.0 fixed (boolean to decimal
cast, explicit positive timestamp years, the ABFS object store cache
key, most of the ANSI error-message items), and document new 1.1.0
behaviour: the experimental in-memory cache, the native Iceberg writer
and the WRITE credential access mode, nested hash shuffle keys, BINARY
sort-merge join keys, aggregate spill and memory metrics, native TIME
functions, Variant-bearing tables whose Variant columns are not read,
and the missing expression and plan-node rows.
Add an "Upgrading to Comet 1.1.0" section to the upgrade guide, and drop
the release-process notes about tag pushes publishing a Docker image,
since that workflow was removed in #4241.
* docs: address review feedback on the 1.1.0 user guide
Document the Kryo registrator under "Additional Configuration" in the
installation guide. Native broadcast needs it with
spark.kryo.registrationRequired=true whether or not the in-memory cache
is enabled, so link to it from the cache docs rather than describing it
as a cache-only setting. Point the operator compatibility cache section
and the operators table at the in-memory cache page that landed on main,
instead of repeating it, which also drops a stale storage-format claim.
List every source Comet checks for the Iceberg S3 region, and link the
ANSI integral overflow divergence to #6217.
Copy file name to clipboardExpand all lines: docs/source/user-guide/latest/compatibility/expressions/_category_template/cast.md
+16-18Lines changed: 16 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,17 +22,23 @@ under the License.
22
22
Cast operations in Comet fall into three levels of support:
23
23
24
24
-**C (Compatible)**: The results match Apache Spark
25
-
-**I (Incompatible)**: The results may match Apache Spark for some inputs, but there are known issues where some inputs
26
-
will result in incorrect results or exceptions. The query stage will fall back to Spark by default. Setting
27
-
`spark.comet.expression.Cast.allowIncompatible=true`will allow all incompatible casts to run natively in Comet, but this is not
28
-
recommended for production use.
29
-
-**U (Unsupported)**: Comet does not provide a native version of this cast expression and the query stage will fall back to
30
-
Spark.
25
+
-**I (Incompatible)**: Comet's native cast may produce different results from Apache Spark for some inputs. By
26
+
default, Comet instead runs Spark's own code-generated cast inside the Comet pipeline, so the results match Spark.
27
+
Setting `spark.comet.expression.Cast.allowIncompatible=true`selects the native cast, but this is not recommended
28
+
for production use.
29
+
-**U (Unsupported)**: Comet does not provide a native version of this cast, so it runs Spark's own code-generated
30
+
cast inside the Comet pipeline.
31
31
-**N/A**: Spark does not support this cast.
32
32
33
-
## ANSI Mode Fallback
33
+
Incompatible and unsupported casts fall back to Spark only when Comet's codegen dispatcher cannot handle them (for
34
+
example, casts involving `VariantType`) or when `spark.comet.exec.scalaUDF.codegen.enabled=false`.
34
35
35
-
Cast will fall back to Spark in some cases when ANSI mode is enabled. This can be enabled by setting `spark.comet.expression.Cast.allowIncompatible=true`. See the [Comet Supported Expressions Guide](../../../expressions.md) for more information on this configuration setting.
36
+
## ANSI Mode Support
37
+
38
+
Enabling ANSI mode does not by itself make a cast fall back to Spark or require
39
+
`spark.comet.expression.Cast.allowIncompatible=true`: every cast that Spark permits in ANSI mode has the same support
40
+
level as in legacy mode. See the [ANSI Mode](#ansi-mode) table below for per-pair support, and the
41
+
[Comet Supported Expressions Guide](../../../expressions.md) for more information on the `allowIncompatible` setting.
36
42
37
43
## Whitespace Trimming in Casts from String
38
44
@@ -143,20 +149,12 @@ Comet's native `CAST(date AS STRING)` is compatible with Spark. Years below 1000
143
149
zero-padded to four digits (e.g. year 999 renders as `0999-01-01`). Years above 9999 are
144
150
rendered without truncation. The cast is timezone-independent.
145
151
146
-
## String to TimestampNTZ
147
-
148
-
Comet's native `CAST(string AS TIMESTAMP_NTZ)` implementation matches Apache Spark's behavior.
149
-
Unlike `CAST(string AS TIMESTAMP)`, this cast is timezone-independent: any timezone offset in
150
-
the input string (e.g. `+08:00`, `Z`, `UTC`) is silently discarded, and the local date-time
151
-
components are preserved as-is. Time-only strings (e.g. `T12:34:56`, `12:34`) produce `NULL`.
152
-
The result is always a wall-clock timestamp with no timezone conversion or DST adjustment.
153
-
154
152
## Decimal with Negative Scale to String
155
153
156
154
Casting a `DecimalType` with a negative scale to `StringType` is marked as incompatible when
157
155
`spark.sql.legacy.allowNegativeScaleOfDecimal` is `false` (the default). When that config is
158
-
disabled, Spark cannot create negative-scale decimals, so Comet falls back to avoid running
159
-
native execution on unexpected inputs.
156
+
disabled, Spark cannot create negative-scale decimals, so by default Comet runs Spark's
157
+
code-generated cast instead of the native one.
160
158
161
159
When `spark.sql.legacy.allowNegativeScaleOfDecimal=true`, the cast is compatible. Comet matches
162
160
Spark's behavior of using Java `BigDecimal.toString()` semantics, which produces scientific
Copy file name to clipboardExpand all lines: docs/source/user-guide/latest/datasources.md
+9-3Lines changed: 9 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,15 +29,17 @@ Arrow format, allowing the Comet pipeline to take over after that, but the proce
29
29
30
30
### Apache Iceberg
31
31
32
-
Comet accelerates Iceberg scans of Parquet files. See the [Iceberg Guide] for more information.
32
+
Comet accelerates Iceberg scans of Parquet files and has an experimental, opt-in native Iceberg writer.
33
+
See the [Iceberg Guide] and [Iceberg Writes](iceberg-writes.md) for more information.
33
34
34
35
[Iceberg Guide]: iceberg.md
35
36
36
37
### CSV
37
38
38
39
Comet provides experimental Rust-based CSV scan support. When `spark.comet.scan.csv.v2.enabled` is enabled, CSV files
39
40
are read in Rust for improved performance. This feature is experimental and performance benefits are
40
-
workload-dependent.
41
+
workload-dependent. Only Spark's DataSource V2 CSV scan is accelerated, and Spark reads CSV through the V1 API by
42
+
default, so also remove `csv` from `spark.sql.sources.useV1SourceList`.
41
43
42
44
Alternatively, when `spark.comet.convert.csv.enabled` is enabled, data from Spark's CSV reader is immediately
43
45
converted into Arrow format, allowing the Comet pipeline to take over after that.
@@ -308,6 +310,10 @@ credential providers and options documented above also apply to alias-scheme URL
308
310
translation feeds the native Iceberg scan; see
309
311
[Object store configuration (S3)](iceberg.md#object-store-configuration-s3) in the Iceberg guide.
310
312
313
+
A native Parquet scan whose alias-scheme paths span more than one bucket falls back to Spark. Alias
314
+
schemes apply to native scans only: a native Iceberg write to an alias-scheme location falls back to
315
+
iceberg-java.
316
+
311
317
### Examples
312
318
313
319
The following examples demonstrate how to configure S3 access using different authentication methods.
@@ -344,7 +350,7 @@ Comet's S3 support has the following limitations:
344
350
345
351
1.**Partial Hadoop S3A configuration support**: Not all Hadoop S3A configurations are currently supported. Only the configurations listed in the tables above are translated and applied to the underlying `object_store` crate.
346
352
347
-
2.**Custom credential providers**: Custom implementations of AWS credential providers are not supported. The implementation only supports the standard credential providers listed in the table above. We are planning to add support for custom credential providers through a JNI-based adapter that will allow calling Java credentialproviders from Rust code. See [#1829](https://github.com/apache/datafusion-comet/issues/1829) for more details.
353
+
2.**Custom credential providers**: Custom credential provider classes named in `fs.s3a.aws.credentials.provider`are not supported; only the standard providers listed in the table aboveare. To route credential requests through your own Java code, implement Comet's `CometS3CredentialProvider` SPI; see [S3 Credential Providers](s3-credential-providers.md). Broader Hadoop S3A integration is tracked in [#1829](https://github.com/apache/datafusion-comet/issues/1829).
0 commit comments