From 9b386b3d47632648f01461dc50af4b70891ead28 Mon Sep 17 00:00:00 2001 From: Naarcha-AWS <97990722+Naarcha-AWS@users.noreply.github.com> Date: Tue, 18 Jul 2023 18:07:31 -0500 Subject: [PATCH] Add Spark connector settings (#4577) * Add Spark connector settings Signed-off-by: Naarcha-AWS * Add additional settings. Signed-off-by: Naarcha-AWS * Adjust intro description. Signed-off-by: Naarcha-AWS * Apply suggestions from code review Co-authored-by: Chris Moore <107723039+cwillum@users.noreply.github.com> Signed-off-by: Naarcha-AWS <97990722+Naarcha-AWS@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Nathan Bower Signed-off-by: Naarcha-AWS <97990722+Naarcha-AWS@users.noreply.github.com> --------- Signed-off-by: Naarcha-AWS Signed-off-by: Naarcha-AWS <97990722+Naarcha-AWS@users.noreply.github.com> Co-authored-by: Chris Moore <107723039+cwillum@users.noreply.github.com> Co-authored-by: Nathan Bower --- _search-plugins/sql/settings.md | 38 ++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/_search-plugins/sql/settings.md b/_search-plugins/sql/settings.md index 73f5e42a..aedcc5d3 100644 --- a/_search-plugins/sql/settings.md +++ b/_search-plugins/sql/settings.md @@ -68,7 +68,7 @@ PUT _plugins/_query/settings Requests to the `_plugins/_ppl` and `_plugins/_sql` endpoints include index names in the request body, so they have the same access policy considerations as the `bulk`, `mget`, and `msearch` operations. Setting the `rest.action.multi.allow_explicit_index` parameter to `false` disables both the `SQL` and `PPL` endpoints. {: .note} -# Available settings +## Available settings Setting | Default | Description :--- | :--- | :--- @@ -78,3 +78,39 @@ Setting | Default | Description `plugins.sql.cursor.keep_alive` | 1 minute | Configures how long the cursor context is kept open. Cursor contexts are resource-intensive, so we recommend a low value. `plugins.query.memory_limit` | 85% | Configures the heap memory usage limit for the circuit breaker of the query engine. `plugins.query.size_limit` | 200 | Sets the default size of index that the query engine fetches from OpenSearch. + +## Spark connector settings + +The SQL plugin supports [Apache Spark](https://spark.apache.org/) as an augmented compute source. When data sources are defined as tables in Apache Spark, OpenSearch can consume those tables. This allows you to run SQL queries against external sources inside OpenSearch Dashboard's [Discover]({{site.url}}{{site.baseurl}}/dashboards/discover/index-discover/) and observability logs. + +To get started, enable the following settings to add Spark as a data source and enable the correct permissions. + +Setting | Description +:--- | :--- +`spark.uri` | The identifier for your Spark data source. +`spark.auth.type` | The authorization type used to authenticate into Spark. +`spark.auth.username` | The username for your Spark data source. +`spark.auth.password` | The password for your Spark data source. +`spark.datasource.flint.host` | The host of the Spark data source. Default is `localhost`. +`spark.datasource.flint.port` | The port number for Spark. Default is `9200`. +`spark.datasource.flint.scheme` | The data scheme used in your Spark queries. Valid values are `http` and `https`. +`spark.datasource.flint.auth` | The authorization required to access the Spark data source. Valid values are `false` and `sigv4`. +`spark.datasource.flint.region` | The AWS Region in which your OpenSearch cluster is located. Only use when `auth` is set to `sigv4`. Default value is `us-west-2``. +`spark.datasource.flint.write.id_name` | The name of the index to which the Spark connector writes. +`spark.datasource.flint.ignore.id_column` | Excludes the `id` column when exporting data in a query. Default is `true`. +`spark.datasource.flint.write.batch_size` | Sets the batch size when writing to a Spark-connected index. Default is `1000`. +`spark.datasource.flint.write.refresh_policy` | Sets the refresh policy for the Spark connection upon failure for the connector to write data to OpenSearch. Either no refresh (`false`), an immediate refresh (`true`), or a set time to wait, `wait_for: X`. Default value is `false`. +`spark.datasource.flint.read.scroll_size` | Sets the number of results returned by queries run using Spark. Default is `100`. +`spark.flint.optimizer.enabled` | Enables OpenSearch to be optimized for Spark connection. Default is `true`. +`spark.flint.index.hybridscan.enabled` | Enables OpenSearch to scan for write data on non-partitioned devices from the data source. Default is `false`. + +Once configured, you can test your Spark connection using the following API call: + +```json +POST /_plugins/_ppl +content-type: application/json + +{ + "query": "source = my_spark.sql('select * from alb_logs')" +} +```