Pipeline Components and Applications

  1. Home
  2. Docs
  3. Pipeline Components and Applications
  4. Loaders and storage targets
  5. RDB Loader
  6. Transforming enriched data
  7. Stream transformer

Stream transformer

For a high-level overview of the Transform process, see Transforming enriched data. For guidance on picking the right transformer app, see How to pick a transformer.

Unlike the Spark transformer, the stream transformer reads data directly from the enriched Kinesis stream and does not use Spark or EMR. It’s a plain JVM application, like Stream Enrich or S3 Loader.

Reading directly from Kinesis means that the transformer can bypass the s3DistCp staging / archiving step.

Another benefit is that it doesn’t process a bounded data set and can emit transformed folders based only on its configured frequency. This means the pipeline loading frequency is limited only by the storage target.

Downloading the artefact

The asset is published as a jar file attached to the Github release notes for each version.

It’s also available as a Docker image on Docker Hub under snowplow/transformer-kinesis:4.0.2.

Configuring snowplow-transformer-kinesis

The transformer takes two configuration files:

  • a config.hocon file with application settings
  • an iglu_resolver.json file with the resolver configuration for your Iglu schema registry.

An example of the minimal required config for the stream transformer can be found here and a more detailed one here. For details about each setting, see the configuration reference.

See here for details on how to prepare the Iglu resolver file.

NOTE: All self-describing schemas for events processed by the transformer must be hosted on Iglu Server 0.6.0 or above. Iglu Central is a registry containing Snowplow-authored schemas. If you want to use them alongside your own, you will need to add it to your resolver file. Keep it mind that it could override your own private schemas if you give it higher priority. For details on this see here.

Running the stream transformer

The two config files need to be passed in as base64-encoded strings:

$ docker run snowplow/transformer-kinesis:4.0.2 \ --iglu-config $RESOLVER_BASE64 \ --config $CONFIG_BASE64
Code language: PHP (php)