bitsail-component-formats-flink


bitsail-component-formats-flink


上级文档: bitsail-components

内容

BitSail 在使用flink作为引擎时,各个connector的数据传输过程中使用 bitsail rows 作为传输中间格式,因此在将数据从数据源读入后需要转化为 bitsail rows 。 本模块用于提供将常见格式数据转化为 bitsail rows 的便捷方法,具体支持的格式如下:

  • 文中bitsail rows指由org.apache.flink.types.Row包住的com.bytedance.bitsail.common.column.Column数据。
子模块支持的功能链接
bitsail-component-format-flink-api提供Row转化的接口link
bitsail-component-format-flink-hive提供 hive Writable的转化方法link
bitsail-component-format-flink-json提供json格式字符串的转化方法link

RowBuilder 接口

RowBuilder顾名思义,即将原始数据转化按照某种格式转化成Row的构建器。因此RowBuilder的转化方法需要至少两个必须的参数:

  1. value: 原始数据,例如Writables, JSON字符串等
  2. rowTypeInfo: 转化row的具体格式,例如字段名称&字段类型

转化产生的产物Row使用参数的方式加载,开发者需要在build方法中对此Row进行赋值。 因此一个基础的构建接口如下:

/**
 * @param value Raw data to transform to 'bitsail rows'.
 * @param reuse The transformed `bitsail row`.
 * @param rowTypeInfo Determine the format (field name, data types) of the transformed row.
 */
void build(Object value, Row reuse, RowTypeInfo rowTypeInfo) throws BitSailException;

除了上面参数外,还可以通过其他的参数指导Row的构建,例如字符编码、包含的字段范围等。因此RowBuilder还提供了以下两个扩展接口:

void build(Object value, Row reuse, String mandatoryEncoding, RowTypeInfo rowTypeInfo) throws BitSailException;

/**
 * @param fieldIndexes Indices of fields in row data that should be included while building.
 */
void build(Object value, Row reuse, String mandatoryEncoding, RowTypeInfo rowTypeInfo, int[] fieldIndexes);