1、继承RichSinkFunction
(1)首先在构造方式传入kudu的masterAddress地址、默认表名、TableSerializationSchema、KuduTableRowConverter、Properties配置对象
(2)重写open方法
初始化KuduClient对象操作kudu,KuduSession对象并传入一堆配置
(3)重写invoke方法
核心是如果已传入TableSerializationSchema对象,则通过其serializeTable方法从输入的json数据里提取表名,如果未定义则直接取默认表名。拿到表名后就能使用KuduClient对象对其操作了
if (schema != null) {
String serializeTableName = schema.serializeTable(row);
if (serializeTableName == null) return;
table = client.openTable(serializeTableName);
}
else
table = client.openTable(tableName);
insert = table.newInsert();
2、定义KuduTableRowConverter接口,将每一条输入数据转换成TableRow对象
public interface KuduTableRowConverter<IN> extends Serializable {
TableRow convert(IN value);
}
定义TableRow类,代表