You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by "dongjoon-hyun (via GitHub)" <gi...@apache.org> on 2026/09/03 19:10:44 UTC
[PR] [SPARK-59216] Support JSON and CSV functions [spark-connect-swift]
dongjoon-hyun opened a new pull request, #522:
URL: https://github.com/apache/spark-connect-swift/pull/522
### What changes were proposed in this pull request?
This PR aims to support the following 10 JSON and CSV functions in two new files,
`JsonFunctions.swift` and `CsvFunctions.swift`.
**JSON (7)**: `from_json`, `to_json`, `schema_of_json`, `get_json_object`, `json_tuple`,
`json_array_length`, `json_object_keys`
**CSV (3)**: `from_csv`, `to_csv`, `schema_of_csv`
Unlike the previous function batches, these functions take an option map. Apache Spark
encodes it as a plain trailing argument rather than a dedicated proto field: both
`Column.fnWithOptions` in `sql/api/src/main/scala/org/apache/spark/sql/Column.scala` and
`_options_to_col` in `python/pyspark/sql/connect/functions/builtin.py` flatten the map into
`k1, v1, k2, v2, ...`, wrap it in a `map(...)` function call, and append it as the last
argument. When there is no option, no extra argument is appended at all. This PR mirrors
that exactly with a new internal `fn(_ name:options:_ args:)` helper in `Functions.swift`,
sorting the keys so that the generated expression is deterministic (Swift `Dictionary` is
unordered).
For the `schema` argument, this PR follows the existing
`DataFrameReader.schema(_ schema: String)` / `schema(_ schema: StructType)` precedent:
`from_json` accepts a DDL `String`, a `StructType` (converted via `StructType.toDDL`), or a
`Column` such as a `schema_of_json` result. `from_csv` accepts a DDL `String` or a `Column`,
matching the Spark Connect Python client. `ArrayType` and `MapType` schemas are covered by
the DDL string form, e.g. `ARRAY<STRUCT<a: INT>>`.
`json_tuple` is a generator function, and is implemented like the existing `explode` /
`posexplode` / `inline` functions.
### Why are the changes needed?
To improve the API coverage of the Swift Spark Connect client. Currently, no JSON or CSV
function is supported, so Swift users cannot parse or produce JSON and CSV strings inside a
`Column` expression without falling back to `selectExpr`.
All the added functions were introduced in Apache Spark 3.5.0 or earlier, so no server
version gate is needed.
### Does this PR introduce _any_ user-facing change?
No, this is a new feature which adds 10 new functions.
```swift
let df = try await spark.sql("SELECT 1 AS id, 'a' AS name")
let parsed = from_json(to_json(struct(col("id"), col("name"))), "id INT, name STRING")
try await df.select(parsed.alias("parsed")).selectExpr("parsed.id", "parsed.name").show()
try await spark.range(1).select(schema_of_json("{\"a\": 1, \"b\": \"x\"}")).show()
// STRUCT<a: BIGINT, b: STRING>
try await df.select(to_csv(struct(col("id"), col("name")), ["sep": ";"])).show()
// 1;a
```
### How was this patch tested?
Pass the CIs with the newly added test suites, `JsonFunctionsTests` and `CsvFunctionsTests`.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Opus 5
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
Re: [PR] [SPARK-59216] Support JSON and CSV functions [spark-connect-swift]
Posted by "dongjoon-hyun (via GitHub)" <gi...@apache.org>.
dongjoon-hyun closed pull request #522: [SPARK-59216] Support JSON and CSV functions
URL: https://github.com/apache/spark-connect-swift/pull/522
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
Re: [PR] [SPARK-59216] Support JSON and CSV functions [spark-connect-swift]
Posted by "dongjoon-hyun (via GitHub)" <gi...@apache.org>.
dongjoon-hyun commented on PR #522:
URL: https://github.com/apache/spark-connect-swift/pull/522#issuecomment-5531149458
Merged to main
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
Re: [PR] [SPARK-59216] Support JSON and CSV functions [spark-connect-swift]
Posted by "dongjoon-hyun (via GitHub)" <gi...@apache.org>.
dongjoon-hyun commented on PR #522:
URL: https://github.com/apache/spark-connect-swift/pull/522#issuecomment-5531087955
Thank you, @viirya ! 😄
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org