SQL Viewer

Ilum’s SQL Viewer lets you run your SQL queries directly in the UI, without the need of writing any Scala or Python code. Designed for simplicity, it offers an intuitive interface for running SQL queries, exploring data, and gaining insights quickly and efficiently.
Whether you are prototyping, analyzing data, or debugging, the SQL Viewer allows you to focus solely on the query logic without managing the underlying code.
It is highly configurable through the UI or Helm deployment values, allowing flexibility in, for example, choosing a different table format, like Delta Lake, Apache Hudi, or Apache Iceberg.
How will it help you?
The SQL Viewer is a powerful tool for reporting and debugging during Spark application development. Instead of building an entire Spark SQL program to query your tables, you can submit SQL statements directly within Ilum’s interface.
For debugging, SQL Viewer is invaluable—eliminating the need to repeatedly write, compile, and submit code like:
val dataset = spark.sql("select ...")
Instead, you can interactively test SQL statements without re-creating sessions each time.
Beyond query results, SQL Viewer offers data exploration and visualization tools, along with logs and execution statistics, giving you deeper insights into the query process.
The SQL Viewer is also integrated with different data catalogs, which means that you can seamlessly query data from previously created tables.
Get started with the SQL viewer
To use the SQL Viewer, you need to deploy Ilum with the SQL Viewer feature enabled. For setup instructions, refer to the Production page.
Once set up, the SQL viewer should be available on the sidebar. Inside, Apache Spark and DuckDB should be available as options by default.
Ilum loads in example queries and notebooks to help new users get started quickly.
Example query and notebook loading is enabled by default.
However, you can disable it by setting ilum-core.examples.sqlQuery=false (disables loading queries) and
ilum-core.examples.sqlNotebook=false (disables loading notebooks) in the Helm chart values.

The SQL Viewer consists of three parts:
-
SQL query editor – The center part of the SQL Viewer, which allows you to write and execute SQL queries. It comes with a simple text editor in the query mode and a notebook-like interface in the notebook mode.
-
The sidebar – Contains your different SQL queries and notebooks in the "Queries" tab and a mini version of the Table Explorer in the "Resources" tab.
-
The output - Will show up in the bottom part of the screen when you execute a query. It has a table with the results of the query, a data exploration tool, execution statistics, and logs.
The data exploration tool in the SQL Viewer.
Alternative engines
The SQL Viewer supports multiple engines, as of now: Spark SQL, Trino, and DuckDB.
| Spark SQL | Trino | DuckDB | |
|---|---|---|---|
| Deployment | On cluster and dynamic | On cluster | Embedded |
| Use Case | ETL, Big data processing | Interactive analytics | Interactive analytics, medium-data ETL, prototyping |
| Storage Support | Comprehensive (with additional JARs) | Sufficient | Lacking (but quickly expanding) |
| Concurrency | High (with tuning) | Very high | Limited |
| Performance | Good for large datasets (with tuning) | Good | Good |
| Overhead | Very high | Medium (always-on coordinator) | Very low (in-process) |
| Lineage support | Extensive | Existing (harder to configure) | With custom extension (supported in Ilum) |
| Extensibility | Easy (big extension ecosystem) | Moderate (smaller extension ecosystem) | Limited (smaller extension catalog, C++ based) |
While using the Spark SQL engine will ensure compatibility with most Ilum components, we recommend checking out the other options since they offer a much better ad-hoc query experience than Spark SQL.
When changing an engine, your tables might be accessible differently or not be available at all due to the differences in the underlying storage.
| Metastore | Spark SQL | Trino | DuckDB |
|---|---|---|---|
| Hive Metastore | ✅ | ✅ | 🟨 (subset of functionalities supported with extension) |
| Nessie | ✅ | ✅ | 🟨 (possible, but unergonomic) |
| DuckLake | ❌ |