# DataframeWriter tuning options

Partitioning management is a critical factor in optimized performance because too few partitions may result in underused resources and too many partitions may result in too many resources for managing small tasks. Partitioning your data more evenly helps avoid these problems. Because partitioning is pushed down to the data in the output files during the `DataFrameWriter .save()` call, repartitioning occurs when writing files.

| Option                        | Description                                                                                                                                                                                                                                         | Value type              | Example value    |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ---------------- |
| **write.partitionBy.columns** | Partitions the output by the given columns on the file system. See the [Spark API documentation](https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/sql/DataFrameWriter.html#partitionBy-java.lang.String...-) for more information.     | Comma separated strings | column1, column2 |
| **write.bucketBy.columns**    | Buckets the output by the given columns. See the [Spark API documentation](https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/sql/DataFrameWriter.html#bucketBy-int-java.lang.String-scala.collection.Seq-) for more information.        | Comma separated strings | column1, column2 |
| **write.sortBy.columns**      | Sorts the output in each bucket by the given columns. See the [Spark API documentation](https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/sql/DataFrameWriter.html#sortBy-java.lang.String-scala.collection.Seq-) for more information. | Comma separated strings | column1, column2 |
| **write.bucketBy.numBuckets** | Buckets the output by the given columns. See the [Spark API documentation](https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/sql/DataFrameWriter.html#bucketBy-int-java.lang.String-scala.collection.Seq-) for more information.        | Integer                 | 5                |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.pentaho.com/install/9.3-install/pentaho-configuration/tasks-to-be-performed-by-an-it-administrator/set-up-the-adaptive-execution-layer-ael/advanced-topics/spark-tuning-landing-page-cp/dataframe-writer-tuning-options-spark.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
