# tRedshiftOutput properties for Apache Spark Batch

These properties are used to configure tRedshiftOutput running in the Spark Batch Job framework.

The Spark Batch tRedshiftOutput component belongs to the Databases family.

The component in this framework is available in all Talend products with Big Data and Talend Data Fabric.

## Basic settings

| Property type | Either Built-In or Repository.<br><br><br>Built-In: No property data stored centrally.<br><br><br>Repository: Select the repository file where the<br>properties are stored. |
| --- | --- |
| ![](https://help.qlik.com/talend/en-US/components/7.3/Resources/images/Save_Icon.png) | Click this icon to open a database connection wizard and store the<br>database connection parameters you set in the component Basic<br>settings view.<br><br>For more information about setting up and storing database<br>connection parameters, see Talend Studio User Guide. |
| Use an existing connection | Select this check box and in the Component<br>List drop-down list, select the desired connection component to<br>reuse the connection details you already defined. |
| Host | Enter the endpoint of the database you need to connect to in<br>Redshift. |
| Port | Enter the port number of the database you need to connect to in<br>Redshift.<br><br>The related information can be found in the Cluster Database<br>Properties area in the Web console of your Redshift.<br><br>For further information, see [Managing clusters console](http://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html). |
| Username and Password | Enter the authentication information to the Redshift database you<br>need to connect to.<br><br>To enter the password, click the [...] button next to the<br>password field, and then in the pop-up dialog box enter the password between double quotes<br>and click OK to save the settings. |
| Database | Enter the name of the database you need to connect to in<br>Redshift.<br><br>The related information can be found in the Cluster Database<br>Properties area in the Web console of your Redshift.<br><br>For further information, see [Managing clusters console](http://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html).<br><br>The bucket and the Redshift database to be used<br>must be in the same region on Amazon. This could avoid the S3ServiceException errors known to<br>Amazon. For further information about these errors, see [S3ServiceException Errors](https://docs.aws.amazon.com/redshift/latest/dg/s3serviceexception-error.html). |
| Schema | Enter the name of the database schema to be used in Redshift. The<br>default schema is called *PUBLIC*.<br><br>A schema in terms of Redshift is similar to a operating system<br>directory. For further information about a Redshift schema, see [Schemas](http://docs.aws.amazon.com/redshift/latest/dg/r_Schemas_and_tables.html). |
| Additional JDBC Parameters | Specify additional JDBC properties for the connection you are creating. The<br>properties are separated by ampersand & and each property is a key-value pair. For<br>example, *ssl=true &<br>sslfactory=com.amazon.redshift.ssl.NonValidatingFactory*, which means the<br>connection will be created using SSL. |
| S3 configuration | Select the tS3Configuration component from which you want Spark to use the<br>configuration details to connect to S3.<br><br>You need drop<br>the tS3Configuration component<br>to be used alongside tRedshiftConfiguration in the same Job so that this tS3Configuration is displayed on the<br>S3 configuration<br>list. |
| S3 temp path | Enter the<br>location in S3 in which the data to be transferred from or to Redshift is<br>temporarily stored.<br><br>This path is independent of<br>the temporary path you need to set in the Basic settings tab of tS3Configuration. |
| Table | Enter the name of the table to which the data will be written.<br>Note that only one table can be written at a time.<br><br>If this table does not exist, you need to select Create from the Save mode list to allow tRedshiftOutput to create it. |
| Schema and Edit<br>Schema | A schema is a row description. It defines the number of fields<br>(columns) to be processed and passed on to the next component. When you create a Spark<br>Job, avoid the reserved word line when naming the<br>fields. |
|  | Built-In: You create and store the schema locally for this component<br>only. |
|  | Repository: You have already created the schema and stored it in the<br>Repository. You can reuse it in various projects and Job designs. |
|  | Click Edit<br>schema to make changes to the schema. If the current schema is of the Repository type, three options are available:<br><br><ul> <li> <p> <span>View schema</span>: choose this                option to view the schema only.</p> </li> <li> <p> <span>Change to built-in property</span>:                choose this option to change the schema to <span>Built-in</span> for local changes.</p> </li> <li> <p> <span>Update repository connection</span>:                choose this option to change the schema stored in the repository and decide whether                to propagate the changes to all the Jobs upon completion. If you just want to                propagate the changes to the current Job, you can select <span>No</span> upon completion and choose this schema metadata                again in the <span>Repository Content</span>                window.</p> </li> </ul> |
| Save mode | Select the actions you want tRedshiftOutput to perform on the specified table.<br><br><ul> <li> <p> <span>Create</span>: <span>tRedshiftOutput</span> creates the specified table          and writes data in this table.</p> </li> <li> <p> <span>Append</span>: <span>tRedshiftOutput</span> appends data to an existing          table.</p> </li> <li> <p> <span>Overwrite</span>: <span>tRedshiftOutput</span> overwrites the data of the          specified table.</p> <p>This overwrite impacts the availability of the target          table. For this reason, if you need to keep this table highly available, you need to          select the <span>Use staging table</span> check          box in the <span>Advanced settings</span> tab          to make <span>tRedshiftOutput</span> create and          write data in a staging table and upon the success of this write, replace the target table          with the staging one. With the staging table enabled, in case the write fails, the target          table can be quickly restored.</p> </li> </ul> |

## Advanced settings

| Distribution style | Select the distribution style to be applied by tRedshiftOutput on the data to be written.<br><br>For further information about each of the distribution style, see<br>[Distribution styles](http://docs.aws.amazon.com/redshift/latest/dg/c_choosing_dist_sort.html). |
| --- | --- |
| Define sort key | Select this check box to sort the data to be written based on<br>given columns of the data.<br><br>Once selecting it, you need to select the column(s) to be used as<br>the key(s) of the sort. For further information about the different type of sort keys, see<br>[Choosing sort keys](http://docs.aws.amazon.com/redshift/latest/dg/t_Sorting_data.html). |
| Use staging table | Select the Use staging<br>table check box to make tRedshiftOutput create and write data in a staging table and upon the success<br>of this write, replace the target table with the staging one.<br><br>This feature is available only when you have selected Overwrite from the Save mode list and is recommended when you need to keep the<br>target table of the overwrite highly available. |
| Define pre-actions | Select this check box and in the field that is displayed, add a<br>semicolon-separated(;) list of SQL statements that are executed before tRedshiftOutput starts to write data.<br><br>For example, using the following statement, you remove all of the<br>rows from the *Movie* table that meet the condition over the<br>*Movie* and the *Director*<br>tables.<br><br>```<br>delete from movie using director where movie.movieid=director.directorid;<br>``` |
| Define post-actions | Select this check box and in the field that is displayed, add a<br>semicolon-separated(;) list of SQL statements that are executed after tRedshiftOutput has successfully written data.<br><br>For example, using the following statement, you grant the Select<br>privilege on the *Movie* table to the user *ychen*.<br><br>```<br>grant select on table movie to ychen;<br>``` |
| Define extra copy options | Select this check box and in the field that is displayed, add a<br>semicolon-separated(;) list of SQL statements that are executed along with the write of the<br>data.<br><br><br>tRedshiftOutput uses the Copy statement of<br>Redshift SQL to write data. The list of SQL statements you add here is actually appended to<br>the Copy statement and so only the statements that make sense at the end of this Copy command<br>should be used. For example, COMPUPDATE that is used to control whether compression encodings<br>are automatically applied during the execution of a Copy.<br><br>For further information about the extra options you can choose,<br>see [Optional parameters](http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html#r_COPY-syntax-overview-optional-parameters). |

## Usage

| **Usage rule** | This component is used as an end component and requires an input link.<br><br>This component should use a tRedshiftConfiguration component present in the same Job to<br>connect to Redshift. You need to drop a tRedshiftConfiguration component alongside this component and configure the<br>Basic settings of this component to use<br>tRedshiftConfiguration.<br><br>This component, along with the Spark Batch component Palette it belongs to,<br>appears only when you are creating a Spark Batch Job.<br><br>Note that in this documentation, unless otherwise explicitly stated, a<br>scenario presents only Standard Jobs, that is to<br>say traditional<br>Talend<br>data integration Jobs. |
| --- | --- |
| Spark Connection | In the Spark<br>Configuration tab in the Run<br>view, define the connection to a given Spark cluster for the whole Job. In<br>addition, since the Job expects its dependent jar files for execution, you must<br>specify the directory in the file system to which these jar files are<br>transferred so that Spark can access these files:<br><br><ul> <li> <div> <span>Yarn mode</span> (Yarn client or Yarn cluster):<ul> <li> <p>When using Google Dataproc, specify a bucket in the                                            <span>Google Storage staging bucket</span>                                        field in the <span>Spark configuration</span>                                        tab.</p> </li> <li> <p>When using HDInsight, specify the blob to be used for Job                                        deployment in the <span>Windows Azure Storage                                            configuration</span> area in the <span>Spark                                            configuration</span> tab.</p> </li> <li>When using Altus, specify the S3 bucket or the Azure                                    Data Lake Storage for Job deployment in the <span>Spark                                        configuration</span> tab.</li> <li>When using Qubole, add a                                        <span>tS3Configuration</span> to your Job to write                                    your actual business data in the S3 system with Qubole. Without                                        <span>tS3Configuration</span>, this business data is                                    written in the Qubole HDFS system and destroyed once you shut                                    down your cluster.</li> <li> <p>When using on-premises distributions, use the configuration component                                        corresponding to the file system your cluster is using.                                        Typically, this system is HDFS and so use <a href="https://help.qlik.com/talend/r/en-US/7.3/components/hdfs/thdfsconfiguration">tHDFSConfiguration</a>.</p> </li> </ul> </div> </li> <li> <p> <span>Standalone mode</span>: use the                            configuration component corresponding to the file system your cluster is                            using, such as <a href="https://help.qlik.com/talend/r/en-US/7.3/components/hdfs/thdfsconfiguration-properties-for-apache-spark-batch">tHDFSConfiguration Apache Spark Batch</a> or <a href="https://help.qlik.com/talend/r/en-US/7.3/components/amazon-s3/ts3configuration-properties-for-apache-spark-batch">tS3Configuration Apache Spark Batch</a>.</p> <p>If you are using Databricks without any configuration component present                            in your Job, your business data is written directly in DBFS (Databricks                            Filesystem).</p> </li> </ul><br><br>This connection is effective on a per-Job basis. |