Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Apache Flink BulkWriterFormatFactory

From Leeroopedia


Knowledge Sources
Domains Connectors, File_Connector
Last Updated 2026-02-09 00:00 GMT

Overview

A factory interface for creating encoding formats that produce BulkWriter.Factory<RowData> instances for the file system connector's table sink.

Description

BulkWriterFormatFactory is an internal marker interface that extends EncodingFormatFactory<BulkWriter.Factory<RowData>>. It serves as the base interface for factories that produce bulk writing formats within the file system connector's table integration layer.

The interface itself declares no additional methods beyond those inherited from EncodingFormatFactory. It is fully specified by its generic type parameters, binding the encoding format output type to BulkWriter.Factory<RowData>. The interface exists primarily for service discovery: implementations are registered via Java SPI so that Flink's FactoryUtil can discover and instantiate them when a table sink is configured with a particular bulk writing format.

This design allows format implementations such as Parquet, ORC, or Avro to provide their own BulkWriterFormatFactory implementations that the file system connector automatically discovers and uses.

Usage

Implement BulkWriterFormatFactory to register a new bulk writing format for the file system connector's table sink. The factory is loaded via Java SPI (META-INF/services/org.apache.flink.table.factories.Factory) and is instantiated by FactoryUtil.createTableFactoryHelper when a table is configured to use the corresponding format for writing.

Code Reference

Source Location

  • Repository: Apache_Flink
  • File: flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/table/factories/BulkWriterFormatFactory.java
  • Lines: 1-36

Signature

@Internal
public interface BulkWriterFormatFactory
        extends EncodingFormatFactory<BulkWriter.Factory<RowData>> {
    // interface is used for discovery but is already fully specified by the generics
}

Import

import org.apache.flink.connector.file.table.factories.BulkWriterFormatFactory;

I/O Contract

Inputs

Name Type Required Description
context DynamicTableFactory.Context Yes The table factory context providing catalog, schema, and configuration information (inherited from EncodingFormatFactory).
formatOptions ReadableConfig Yes Format-specific configuration options such as compression codec or block size (inherited from EncodingFormatFactory).

Outputs

Name Type Description
createEncodingFormat result EncodingFormat<BulkWriter.Factory<RowData>> An encoding format that produces BulkWriter.Factory<RowData> instances for writing file data in bulk.

Usage Examples

// Implement a custom bulk writer format factory
public class MyBulkWriterFormatFactory implements BulkWriterFormatFactory {

    @Override
    public String factoryIdentifier() {
        return "my-format";
    }

    @Override
    public Set<ConfigOption<?>> requiredOptions() {
        return Collections.emptySet();
    }

    @Override
    public Set<ConfigOption<?>> optionalOptions() {
        return Collections.singleton(MY_COMPRESSION_OPTION);
    }

    @Override
    public EncodingFormat<BulkWriter.Factory<RowData>> createEncodingFormat(
            DynamicTableFactory.Context context,
            ReadableConfig formatOptions) {
        // Return an encoding format that creates BulkWriter factories
        return new MyBulkEncodingFormat(formatOptions);
    }
}

// Register via META-INF/services/org.apache.flink.table.factories.Factory

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment