or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

additional-examples.mdindex.mdstorm-operators.mdutility-classes.mdwordcount-examples.md
tile.json

utility-classes.mddocs/

Utility Classes and Base Components

Core utility classes providing the foundation for Storm-Flink integration. These classes include abstract base classes for creating custom components, data sources for various input scenarios, output sinks with configurable formatting, and utilities for tuple formatting.

Capabilities

Abstract Base Classes

Foundation classes for building custom Storm components compatible with Flink execution.

AbstractLineSpout

Base class for creating line-based data source spouts.

/**
 * Abstract base class for spouts that read line-based text data
 */
public abstract class AbstractLineSpout implements IRichSpout {
    public static final String ATTRIBUTE_LINE = "line";
    
    public void open(Map conf, TopologyContext context, SpoutOutputCollector collector);
    public void close();
    public void activate();
    public void deactivate();
    public void ack(Object msgId);
    public void fail(Object msgId);
    public void declareOutputFields(OutputFieldsDeclarer declarer);
    public Map<String, Object> getComponentConfiguration();
    
    // Implement in subclasses
    public abstract void nextTuple();
}

AbstractBoltSink

Base class for creating output sink bolts with configurable formatting.

/**
 * Abstract base class for bolt sinks that write processed data
 */
public abstract class AbstractBoltSink implements IRichBolt {
    public AbstractBoltSink(OutputFormatter formatter);
    
    public final void prepare(Map stormConf, TopologyContext context, OutputCollector collector);
    public final void execute(Tuple input);
    public void cleanup();
    public final void declareOutputFields(OutputFieldsDeclarer declarer);
    public Map<String, Object> getComponentConfiguration();
    
    // Implement in subclasses
    protected abstract void prepareSimple(Map<?, ?> stormConf, TopologyContext context);
    protected abstract void writeExternal(String line);
}

Data Source Spouts

Spouts for reading data from various sources including memory arrays and files.

InMemorySpout

Spout for reading data from in-memory arrays.

/**
 * Spout for reading data from in-memory arrays
 * @param <T> Type of data elements
 */
public class InMemorySpout<T> extends AbstractLineSpout {
    /**
     * Create spout with data source array
     * @param source Array of data elements to emit
     */
    public InMemorySpout(T[] source);
    
    public void nextTuple();
}

FiniteInMemorySpout

Memory-based spout that terminates when data is exhausted.

/**
 * Memory spout that terminates when data is exhausted
 */
public class FiniteInMemorySpout extends InMemorySpout<String> implements FiniteSpout {
    /**
     * Create finite spout with string data source
     * @param source Array of strings to emit
     */
    public FiniteInMemorySpout(String[] source);
    
    /**
     * Check if spout has reached end of data
     * @return true if no more data available
     */
    public boolean reachedEnd();
}

FileSpout

Spout for reading lines from local files.

/**
 * Spout for reading lines from local files
 */
public class FileSpout extends AbstractLineSpout {
    public static final String INPUT_FILE_PATH = "input.path";
    
    /**
     * Create file spout with path from configuration
     */
    public FileSpout();
    
    /**
     * Create file spout with specific path
     * @param path Path to input file
     */
    public FileSpout(String path);
    
    public void open(Map conf, TopologyContext context, SpoutOutputCollector collector);
    public void close();
    public void nextTuple();
}

FiniteFileSpout

File-based spout that terminates at end of file.

/**
 * File spout that terminates at end of file
 */
public class FiniteFileSpout extends FileSpout implements FiniteSpout {
    public FiniteFileSpout();
    public FiniteFileSpout(String path);
    
    public void open(Map conf, TopologyContext context, SpoutOutputCollector collector);
    public void nextTuple();
    public boolean reachedEnd();
}

Output Sinks

Configurable output sinks for writing processed data to various destinations.

BoltPrintSink

Sink that prints tuples to standard output.

/**
 * Sink that prints tuples to standard output
 */
public class BoltPrintSink extends AbstractBoltSink {
    /**
     * Create print sink with formatter
     * @param formatter Formatter for tuple output
     */
    public BoltPrintSink(OutputFormatter formatter);
    
    protected void prepareSimple(Map stormConf, TopologyContext context);
    protected void writeExternal(String line);
}

BoltFileSink

Sink that writes tuples to files.

/**
 * Sink that writes tuples to files
 */
public class BoltFileSink extends AbstractBoltSink {
    /**
     * Create file sink with path and default formatter
     * @param path Output file path
     */
    public BoltFileSink(String path);
    
    /**
     * Create file sink with path and custom formatter
     * @param path Output file path
     * @param formatter Formatter for tuple output
     */
    public BoltFileSink(String path, OutputFormatter formatter);
    
    protected void prepareSimple(Map stormConf, TopologyContext context);
    protected void writeExternal(String line);
    public void cleanup();
}

Output Formatters

Interfaces and implementations for formatting tuples for output.

OutputFormatter Interface

Interface for custom tuple formatting.

/**
 * Interface for custom tuple formatting
 */
public interface OutputFormatter extends Serializable {
    /**
     * Format tuple for output
     * @param input Tuple to format
     * @return Formatted string representation
     */
    String format(Tuple input);
}

SimpleOutputFormatter

Formats single-field tuples as strings.

/**
 * Formats single-field tuples as strings
 */
public class SimpleOutputFormatter implements OutputFormatter {
    /**
     * Format single-field tuple as string
     * @param input Tuple with single field
     * @return String representation of first field
     */
    public String format(Tuple input);
}

TupleOutputFormatter

Formats multi-field tuples in (field1,field2,...) format.

/**
 * Formats multi-field tuples in (field1,field2,...) format
 */
public class TupleOutputFormatter implements OutputFormatter {
    /**
     * Format multi-field tuple in parentheses format
     * @param input Tuple with multiple fields
     * @return String in format (field1,field2,...)
     */
    public String format(Tuple input);
}

Usage Examples

Creating Custom Data Sources

import org.apache.flink.storm.util.InMemorySpout;

// Create spout with string data
String[] data = {"Hello", "World", "Storm", "Flink"};
InMemorySpout<String> spout = new InMemorySpout<>(data);

// Create finite spout that stops automatically
FiniteInMemorySpout finiteSpout = new FiniteInMemorySpout(data);

Creating File-Based Sources

import org.apache.flink.storm.util.FileSpout;
import org.apache.flink.storm.util.FiniteFileSpout;

// Read from specific file
FileSpout fileSpout = new FileSpout("/path/to/input.txt");

// Read file and stop at end
FiniteFileSpout finiteFileSpout = new FiniteFileSpout("/path/to/input.txt");

Creating Output Sinks

import org.apache.flink.storm.util.*;

// Print to console with simple formatting
OutputFormatter simpleFormatter = new SimpleOutputFormatter();
BoltPrintSink printSink = new BoltPrintSink(simpleFormatter);

// Write to file with tuple formatting
OutputFormatter tupleFormatter = new TupleOutputFormatter();
BoltFileSink fileSink = new BoltFileSink("/path/to/output.txt", tupleFormatter);

Building Custom Components

import org.apache.flink.storm.util.AbstractLineSpout;

public class CustomSpout extends AbstractLineSpout {
    private String[] data;
    private int index = 0;
    
    public CustomSpout(String[] data) {
        this.data = data;
    }
    
    @Override
    public void nextTuple() {
        if (index < data.length) {
            collector.emit(new Values(data[index++]));
        }
    }
}