---
description: Components, User Interface, Configuration options ..
---

# Getting Started

{% hint style="info" %}
### Introduction

In 'Getting Started' you will learn how to configure:&#x20;

* Pentaho Data Integration & Server components
* Pentaho Data Integration User Interface&#x20;
* KETTLE Configuration Files&#x20;
* Adding JDBC Drivers&#x20;
* Pentaho Repository
{% endhint %}

<figure><img src="https://content.gitbook.com/content/7IROMjOTNySvPnpnJs27/blobs/id94Jugw2GxVnjRjwsZx/PSI-Workflow%202.svg" alt=""><figcaption><p>Pentaho Pro Suite</p></figcaption></figure>

***

{% hint style="info" %}
#### **Pentaho Pro Suite Components**

Pentaho Pro Suite is comprised of a number components:
{% endhint %}

{% tabs %}
{% tab title="English" %}
<figure><img src="https://155189258-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7IROMjOTNySvPnpnJs27%2Fuploads%2FpJ6Jq4hzCjpBam1O21IG%2Fcomponents.png?alt=media&#x26;token=bd5e0b24-2222-4947-badf-6e60b47b9544" alt=""><figcaption><p>Placeholder for Components</p></figcaption></figure>

{% hint style="success" %}
_The following content has been automatically generated by an AI system and should be used for informational purposes only. We cannot guarantee the accuracy, completeness, or timeliness of the information provided._&#x20;

_Any actions taken based on this content are at your own risk. We recommend seeking qualified expertise or conducting further research to validate and supplement the information provided._
{% endhint %}
{% endtab %}

{% tab title="Second Tab" %}

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="1. Components" %}
<div data-full-width="true"><figure><img src="https://content.gitbook.com/content/7IROMjOTNySvPnpnJs27/blobs/zzHHtHUll8hhDBIB9cM6/architecture.png" alt=""><figcaption><p>Pentaho Client / Server Architecture</p></figcaption></figure></div>



{% tabs %}
{% tab title="1.1 Data Integration" %}
{% hint style="info" %}
#### Spoon

Graphical modelling environment for developing, testing, debugging and monitoring jobs and transformations.

**Designer**

Drag & Drop 'objects' to design your pipelines and workflows.

**Scheduler**

Connects to Quartz scheduler on server. Jobs and transformations must be uploaded to Repository.

**Engine**

Kettle and Spark engines available to execute jobs and transformations.

**Repository Browser**

Connects to Apache Jackrabbit content Repository, pointing to a supported database:

* PostgreSQL
* MSSQL Server
* Oracle
* MySQL
* MariaDB

**DB Explorer**

Database Explorer that enables you to conduct minimal database operations.
{% endhint %}
{% endtab %}

{% tab title="1.2 Pentaho Server" %}
{% hint style="info" %}
#### Pentaho Server

The Pentaho Server hosts Pentaho-created and user-created content. It is a core component for executing data integration transformations and jobs using the Pentaho Data Integration (PDI) Engine. It allows you to manage users and roles (default security) or integrate security to your existing security provider such as LDAP or Active Directory
{% endhint %}

&#x20;The primary functions of the Pentaho Server are:

<table data-header-hidden><thead><tr><th width="282"></th><th></th></tr></thead><tbody><tr><td><strong>Execution</strong></td><td>Executes ETL jobs and transformations using the Pentaho Data Integration engine</td></tr><tr><td><strong>Security</strong></td><td>Allows you to manage users and roles (default security) or integrate security to your existing security provider such as LDAP or Active Directory</td></tr><tr><td><strong>Content Management</strong></td><td>Provides a centralized repository that allows you to manage your ETL jobs and transformations. This includes full revision history on content and features such as sharing and locking for collaborative development environments.</td></tr><tr><td><strong>Scheduling &#x26; Monitoring</strong></td><td>Provides the services allowing you to schedule and monitor activities on the Data Integration Server from within the Spoon design environment (Quartz).</td></tr></tbody></table>



{% embed url="https://docs.hitachivantara.com/r/en-us/pentaho-data-integration-and-analytics/10.0.x/mk-95pdia000/components-reference" %}
Components Reference
{% endembed %}
{% endtab %}

{% tab title="1.3 Carte" %}
{% hint style="info" %}
#### Carte Server

The Pentaho DI Carte Server is a vital component within the Pentaho data integration suite, designed to facilitate robust data processing operations. It serves as a stand-alone web server and execution environment that allows for the remote execution of ETL (Extract, Transform, Load) tasks, making it a cornerstone for managing data workflows efficiently.
{% endhint %}

<figure><img src="https://155189258-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7IROMjOTNySvPnpnJs27%2Fuploads%2F2ZuU37RhKiVyixGY3xbU%2Fcarte.png?alt=media&#x26;token=752633fa-022d-43df-bf70-84431ffede49" alt=""><figcaption><p>Carte Server</p></figcaption></figure>



{% hint style="info" %}
#### Simplicity and Efficiency

Carte stands out for its straightforward and user-friendly setup, paired with a highly efficient operation that conserves resources. This makes it the ideal choice for organizations seeking to enhance their data integration workflows efficiently and with minimal operational burden.

**Remote Execution Flexibility**

With Carte, executing ETL tasks remotely becomes effortless, allowing for versatile data integration management from any location. Serving as a powerful remote ETL server, Carte can handle jobs and transformations from afar, broadening the capabilities of data integration strategies.

**Seamless Integration Capabilities**

Featuring an extensive array of built-in connectors, Carte excels in smoothly integrating with a multitude of sources and destinations, including databases and data warehouses. This capability facilitates straightforward data extraction, transformation, and loading processes across various platforms.

**Built for Scalability**

Carte is designed to grow with your needs, enabling deployment in multiple configurations such as Kubernetes, Docker, and cloud-based solutions. Its lightweight design ensures consistent performance, even as data demands increase.

**Intuitive Web Interface**

The Carte web interface offers a clean and efficient way to oversee jobs and transformations. Users gain access to real-time task updates, status reports, and comprehensive execution logs, all through a user-friendly dashboard.
{% endhint %}
{% endtab %}

{% tab title="1.4 REST APIs" %}
{% hint style="info" %}
#### PDI REST APIs

You can use PDI's command line tools to execute PDI content from outside of Spoon. Typically, you would use these tools in the context of creating a script or a Cron job to run the job or transformation based on some condition outside of the realm of Pentaho software.&#x20;
{% endhint %}

{% hint style="info" %}
#### Pan

A standalone command line process that can be used to execute transformations and jobs you created in Spoon. The data transformation engine Pan reads data from and writes data to various data sources. Pan also allows you to manipulate data.

```
./pan.sh /file:/home/[pentaho_user]/[path]/[transformation].ktr  /level:[Log Level]
```
{% endhint %}

{% hint style="info" %}
#### Kitchen

A standalone command line process that can be used to execute jobs. The program that executes the jobs designed in the Spoon graphical interface, either in XML or in a database repository. Jobs are usually scheduled to run in batch mode at regular intervals.

```
./kitchen.sh /file:/home/[pentaho_user]/[path]/[job].kjb  /level:[Log level]
```
{% endhint %}
{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="2. PDI UI" %}
{% hint style="info" %}
#### User Interface

Within the UI, you can author, edit, run, and debug transformations and jobs. You can also enter license keys, add data connections, and define security (default options - Pentaho or LDAP).&#x20;

The Welcome page contains useful links to documentation, community links for getting involved in the Pentaho Data Integration project, and links to blogs from some of the top contributors to the Pentaho Data Integration project.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/7IROMjOTNySvPnpnJs27/blobs/d83QfYwwArpoaJ0HRnMu/spoon%20welcome.png" alt=""><figcaption><p>Welcome page</p></figcaption></figure>

{% hint style="info" %}
There are a few different ways to start PDI. The method that you should use depends on the way you installed Pentaho Data Integration (PDI).
{% endhint %}

<table><thead><tr><th width="255">OS: Windows / Unix</th><th>Action</th></tr></thead><tbody><tr><td>spoon.bat / spoon.sh</td><td>Starts Spoon</td></tr><tr><td>kichen.bat / kitchen.sh</td><td>Command Line for Jobs</td></tr><tr><td>pan.bat / pan.sh</td><td>Command Line for Transformations</td></tr></tbody></table>

#### Launch Data Integration

1. Run the following command `(Linux):`

```bash
cd
cd ~/Scripts
sh pentaho--platform.sh
```

{% content-ref url="getting-started/configuring-pdi-ui" %}
[configuring-pdi-ui](getting-started/configuring-pdi-ui)
{% endcontent-ref %}
{% endtab %}

{% tab title="3. Configuration Files" %}
{% hint style="info" %}
#### Configuration Files

The default Pentaho Data Integration (PDI) HOME directory is the user's home directory. Here is located in the .kettle folder, are the main PDI configuration files.&#x20;

* Windows C:{user}.kettle&#x20;
* Linux based operating systems ($HOME/.kettle)

The directory may change depending on the user who is logged on. Thus, the configuration files that control the behaviour of PDI jobs and transformations are different from user to user.&#x20;

This also applies when running PDI from the Pentaho BI Platform. When you set the KETTLE\_HOME variable, the PDI jobs and transformations can be run without being affected by the user who is logged on. KETTLE\_HOME is used to change the location of the files normally in \[user home].kettle
{% endhint %}

<table><thead><tr><th width="257">File</th><th>Description</th></tr></thead><tbody><tr><td>kettle.properties</td><td>main configuration file with global variables</td></tr><tr><td>shared.xml</td><td>list of shared artefacts</td></tr><tr><td>db.cache</td><td>database cache for metadata </td></tr><tr><td>repositories.xml</td><td>list of repositories</td></tr><tr><td>.spoonrc</td><td>settings for the UI</td></tr><tr><td>.languageChoice</td><td>language settings</td></tr></tbody></table>

{% tabs %}
{% tab title="3.1 kettle.properties" %}
{% hint style="info" %}
#### kettle.properties

The kettle.properties file is where you will find all the global variables for KETTLE. You can also set global variables that can be used in Transformations and Jobs. For example, you can define database connections, paths to files, or variables that can be used as parameters in your solution.&#x20;
{% endhint %}

The kettle.properties can be edited using a Text Editor or via the Toolbar, select:

<div align="center"><figure><img src="https://content.gitbook.com/content/7IROMjOTNySvPnpnJs27/blobs/AtamwPdU7tFT7kTUWYvZ/kettle_edit.png" alt=""><figcaption><p>kettle.properties</p></figcaption></figure></div>

{% content-ref url="getting-started/kettle-variables" %}
[kettle-variables](getting-started/kettle-variables)
{% endcontent-ref %}
{% endtab %}

{% tab title="3.2 shared.xml" %}
{% hint style="info" %}
#### shared.xml

A variety of objects can now be placed in a shared objects file on the local machine. The default location for the shared objects file is:

$HOME/.kettle/shared.xml

Objects that can be shared using this method include:&#x20;

* Database connections&#x20;
* Steps
* Slave servers&#x20;
* Partition schemas&#x20;
* Cluster schemas&#x20;

The location of the shared objects file is configurable on the "Miscellaneous" tab of the Transformation > Settings dialog.
{% endhint %}

1. To share one of these objects, simply right-click on the object in the tree control on the left and choose share.

<figure><img src="https://155189258-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7IROMjOTNySvPnpnJs27%2Fuploads%2FSjugSumASP58Gbbt3eNQ%2Fshare%20connection.png?alt=media&#x26;token=a5e4fae1-4115-4f6b-94a9-66a9e3832e96" alt=""><figcaption><p>Shared Object - Connection</p></figcaption></figure>

{% hint style="info" %}
**Bold Type** indicates the Object is shared.
{% endhint %}
{% endtab %}

{% tab title="3.3 repositories.xml" %}
{% hint style="info" %}
#### repositories.xml

A variety of objects can now be placed in a shared objects file on the local machine. The default location for the shared objects file is:

$HOME/.kettle/repositories.xml
{% endhint %}

```xml
<repositories>
<repository>
<id>PentahoEnterpriseRepository</id>
<name>Pentaho</name>
<description/>
<is_default>false</is_default>
<repository_location_url>http://localhost:8080/pentaho</repository_location_url>
<version_comment_mandatory>N</version_comment_mandatory>
</repository>
</repositories>
```
{% endtab %}

{% tab title="3.4 .spoonrc" %}
{% hint style="info" %}
#### .spoonrc

Used to store preferences and program state of Spoon. Other Kettle programs do not use this file.&#x20;

* General settings and defaults&#x20;
* User interface settings&#x20;
* The last opened transformation/job

The default location for the shared objects file is:

$HOME/.kettle/.spoonrc
{% endhint %}

```
#Kettle Properties file
#Sat Dec 16 22:49:28 GMT 2023
AskAboutReplacingDatabases=N
AutoCollapseCoreObjectsTree=Y
AutoSave=N
AutoSplit=N
BackgroundColorB=255
BackgroundColorG=255
BackgroundColorR=255
CustomParameterMergeJoinSortWarning=Y
CustomParameterMergeRowsSortWarning=Y
CustomParameterSetVariableUsageWarning=Y
...
```

{% hint style="info" %}
These options are set from the main menu: Tools -> Options
{% endhint %}
{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="4. JDBC" %}
{% hint style="info" %}
#### Adding JDBC Drivers

The PDI & Pentaho Server needs the appropriate driver to connect to the database that stores your data. Your database administrator, Chief Intelligence Officer, or IT manager should be able to provide the appropriate driver. If not, you can download drivers from your database vendor's website.&#x20;

The [Components Reference](https://help.hitachivantara.com/Documentation/Pentaho/9.0/Setup/Components_Reference) contains a list of drivers.

Once you have the correct driver, copy it to the following directories:

* Pentaho Server: /pentaho/server/pentaho-server/tomcat/lib/
* PDI client: data-integration/lib
{% endhint %}

{% hint style="danger" %}
You must restart the PDI client for the driver to take effect.

There should be only one driver for your database in the directory. Ensure that there are no other versions of the same vendor's driver in this directory. If there are, back up the old driver files and remove them to avoid version conflicts.&#x20;
{% endhint %}
{% endtab %}

{% tab title="5. Repository" %}
{% hint style="info" %}
#### Pentaho Repository

The Pentaho+ platform implements its repository using [**Apache Jackrabbit**](http://jackrabbit.apache.org), a fully conforming implementation of the content repository for Java technology API (JCR, specified in JSR 170 and JSR 283)

Apache Jackrabbit needs two pieces of information to set up a runtime content repository instance:

* Repository home directory\
  The filesystem path of the directory containing the content repository accessed by the runtime instance of Jackrabbit. This directory usually contains all the repository content, search indexes, internal configuration, and other persistent information managed within the content repository. Note that this is not absolutely required and some persistence managers and other Jackrabbit components may well be configured to access files and even other resources (like remote databases) outside the repository home directory. A designated repository home directory is however always needed even if some components choose to not use it. Jackrabbit will automatically fill in the repository home directory with all the required files and subdirectories when the repository is first instantiated.
* Repository configuration file\
  The filesystem path of the repository configuration XML file. This file specifies the class names and properties of the various Jackrabbit components used to manage and access the content repository. Jackrabbit parses this configuration file and instantiates the specified components when the runtime content repository instance is created.
{% endhint %}

{% hint style="info" %}
[**Hibernate**](https://hibernate.org/) is a Java framework which is used to store the Java objects in the relational database system. It is an open-source, lightweight, ORM (Object Relational Mapping) tool.
{% endhint %}

{% hint style="info" %}
[**Quartz**](http://www.quartz-scheduler.org/) is an open source job-scheduling framework written entirely in Java and designed for use in both _J2SE_ and _J2EE_ applications.
{% endhint %}

***

{% hint style="info" %}
#### Versioning & Comments (Dev only)

Pentaho Data Integration (PDI) can track versions and comments for jobs, transformations, and connection information when you save them. You can turn version control and comment tracking on or off by modifying their related statements in the repository.spring.properties text file.

By default, version control and comment tracking are disabled (set to false). Best Practice: manage your ETL workflows with a 3rd party content management tool, e.g. Github; only uploading the production version into the Repository.
{% endhint %}

1. Exit from the PDI client (also called Spoon).
2. Stop the Pentaho Server.
3. Edit repository.spring.properties file.

```bash
cd
cd ~/Pentaho/server/pentaho-server/pentaho-solution/systems
nano repository.spring.properties
```

4. Edit the versioningEnabled and versionCommentsEnabled statements:&#x20;

```
versioningEnabled=true versionCommentsEnabled=true
```
{% endtab %}
{% endtabs %}
