Pinot Version | 1.0.0 |
---|---|
Code | startreedata/pinot-recipes/groovy-transformation-functions |
Prerequisites
To follow the code examples in this guide, you must install Docker locally and download recipes.Navigate to recipe
- If you haven’t already, download recipes.
- Navigate to the recipe by running the following command:
Launch Pinot Cluster
You can spin up a Pinot Cluster and Kafka Broker by running the following command:Controller configuration
We need to provide configuration parameters to the Pinot Controller to enable Groovy in transformation functions. This is done in the following section of the Docker Compose file:/config/controller-conf.conf
, the contents of which are shown below:
Dataset
We’re going to import a couple of JSON documents into Kafka and then from there into Pinot.Pinot Schema and Table
Now let’s create a Pinot Schema and Table. Only the timestamp field from our data source maps to a schema column name - we’ll be using transformation functions to populate the id and name columns.events
topic:
ingestionConfig.transformConfigs
:
- The id one extracts
payload.after.id
if theafter
property exists, otherwise it usespayload.before.id
- The name one concatenates
payload.firstName
andpayload.lastName
If you only need to do simple data transformation, you can use the built-in transformation functions.
Ingest Data into Kafka
We can run the following command to import a couple of documents into Kafka:Querying
Once that’s completed, navigate to localhost:9000/#/query and click on theevents
table or copy/paste the following query:
id | name | timestamp |
---|---|---|
3 | James Smith | 2019-10-09 21:25:25.0 |
2 | John Gates | 2019-10-10 21:33:25.0 |