Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/trinodb/trino
Official repository of Trino, the distributed SQL query engine for big data, formerly known as PrestoSQL (https://trino.io)
https://github.com/trinodb/trino
analytics big-data data-science database databases datalake delta-lake distributed-database distributed-systems hadoop hive iceberg java jdbc presto prestodb query-engine sql trino
Last synced: 3 days ago
JSON representation
Official repository of Trino, the distributed SQL query engine for big data, formerly known as PrestoSQL (https://trino.io)
- Host: GitHub
- URL: https://github.com/trinodb/trino
- Owner: trinodb
- License: apache-2.0
- Created: 2019-01-19T06:38:14.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-12-06T13:36:52.000Z (6 days ago)
- Last Synced: 2024-12-06T14:29:33.561Z (6 days ago)
- Topics: analytics, big-data, data-science, database, databases, datalake, delta-lake, distributed-database, distributed-systems, hadoop, hive, iceberg, java, jdbc, presto, prestodb, query-engine, sql, trino
- Language: Java
- Homepage: https://trino.io
- Size: 260 MB
- Stars: 10,554
- Watchers: 179
- Forks: 3,039
- Open Issues: 2,395
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Security: .github/SECURITY.md
Awesome Lists containing this project
- awesome-distributed-system-projects - trino - fast distributed SQL query engine for big data analytics
- awesome-ccamel - trinodb/trino - Official repository of Trino, the distributed SQL query engine for big data, formerly known as PrestoSQL (https://trino.io) (Java)
- awesome-starts - trinodb/trino - Official repository of Trino, the distributed SQL query engine for big data, formerly known as PrestoSQL (https://trino.io) (Java)
- awesome-for-beginners - Trino (formerly Presto SQL)
- awesome-dataops - Trino - A fast distributed SQL query engine for big data analytics. (SQL Query Engine / Vector Database)
- awesome-datalake - Trino - Trino is a fast distributed SQL query engine for big data analytics. (Data Lake Engines)
- awesome-datalake - Trino - Trino is a fast distributed SQL query engine for big data analytics. (Data Lake Engines)
- StarryDivineSky - trinodb/trino
- fucking-awesome-for-beginners - Trino (formerly Presto SQL)
README
Trino is a fast distributed SQL query engine for big data analytics.
See the User Manual for deployment instructions and end user documentation.
## Development
Learn about development for all Trino organization projects:
* [Vision](https://trino.io/development/vision)
* [Contribution process](https://trino.io/development/process#contribution-process)
* [Pull request and commit guidelines](https://trino.io/development/process#pull-request-and-commit-guidelines-)
* [Release note guidelines](https://trino.io/development/process#release-note-guidelines-)Further information in the [development section of the
website](https://trino.io/development) includes different roles, like
contributors, reviewers, and maintainers, related processes, and other aspects.See [the Trino developer guide](https://trino.io/docs/current/develop.html) for
information about the SPI, implementing connectors and other plugins plugins,
the client protocol, writing tests and other lower level details.See [DEVELOPMENT](.github/DEVELOPMENT.md) for information about code style,
development process, and guidelines.See [CONTRIBUTING](.github/CONTRIBUTING.md) for contribution requirements.
## Security
See the project [security policy](.github/SECURITY.md) for
information about reporting vulnerabilities.Trino supports [reproducible builds](https://reproducible-builds.org) as of version 449.
## Build requirements
* Mac OS X or Linux
* Java 23.0.0+, 64-bit
* Docker
* Turn SELinux or other systems disabling write access to the local checkout
off, to allow containers to mount parts of the Trino source tree## Building Trino
Trino is a standard Maven project. Simply run the following command from the
project root directory:./mvnw clean install -DskipTests
On the first build, Maven downloads all the dependencies from the internet
and caches them in the local repository (`~/.m2/repository`), which can take a
while, depending on your connection speed. Subsequent builds are faster.Trino has a comprehensive set of tests that take a considerable amount of time
to run, and are thus disabled by the above command. These tests are run by the
CI system when you submit a pull request. We recommend only running tests
locally for the areas of code that you change.## Running Trino in your IDE
### Overview
After building Trino for the first time, you can load the project into your IDE
and run the server. We recommend using
[IntelliJ IDEA](http://www.jetbrains.com/idea/). Because Trino is a standard
Maven project, you easily can import it into your IDE. In IntelliJ, choose
*Open Project* from the *Quick Start* box or choose *Open*
from the *File* menu and select the root `pom.xml` file.After opening the project in IntelliJ, double check that the Java SDK is
properly configured for the project:* Open the File menu and select Project Structure
* In the SDKs section, ensure that JDK 23 is selected (create one if none exist)
* In the Project section, ensure the Project language level is set to 23### Running a testing server
The simplest way to run Trino for development is to run the `TpchQueryRunner`
class. It will start a development version of the server that is configured with
the TPCH connector. You can then use the CLI to execute queries against this
server. Many other connectors have their own `*QueryRunner` class that you can
use when working on a specific connector.### Running the full server
Trino comes with sample configuration that should work out-of-the-box for
development. Use the following options to create a run configuration:* Main Class: `io.trino.server.DevelopmentServer`
* VM Options: `-ea -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties -Djdk.attach.allowAttachSelf=true`
* Working directory: `$MODULE_DIR$`
* Use classpath of module: `trino-server-dev`The working directory should be the `trino-server-dev` subdirectory. In
IntelliJ, using `$MODULE_DIR$` accomplishes this automatically.If `VM options` doesn't exist in the dialog, you need to select `Modify options`
and enable `Add VM options`.To adjust which plugins are enabled for the development server, adjust the value of
`plugin.bundles` in `config.properties`. Each entry in this list must represent a plugin
specified by one of the following options:
* A path to a `pom.xml` or `*.pom` file describing a Maven project that produces a plugin.
* Maven coordinates, in the form `:[:[:]]:`. The plugin will be loaded via Maven and therefore must be available in your local repository or a remote repository.
* A path to a plugin directory containing JAR files. See [Deploying a custom plugin](https://trino.io/docs/current/develop/spi-overview.html#deploying-a-custom-plugin) for more details.If you want to use a plugin in a catalog, you must add a corresponding
`.properties` file to `testing/trino-server-dev/etc/catalog`.### Running the CLI
Start the CLI to connect to the server and run SQL queries:
client/trino-cli/target/trino-cli-*-executable.jar
Run a query to see the nodes in the cluster:
SELECT * FROM system.runtime.nodes;
Run a query against the TPCH connector:
SELECT * FROM tpch.tiny.region;