| 构造器和说明 |
|---|
DefaultOTSWriter(OTSAsync ots,
String tableName,
com.aliyun.openservices.ots.internal.writer.WriterConfig config,
com.aliyun.openservices.ots.internal.OTSCallback<RowChange,ConsumedCapacity> callback,
Executor executor) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
addRowChange(List<RowChange> rowChanges,
List<RowChange> dirtyRows)
向本地缓冲区批量写入行。
|
void |
addRowChange(RowChange rowChange)
向本地缓冲区增加一行数据。
|
void |
close()
关闭OTSWriter,在关闭之前,会先flush掉缓冲区内的所有数据。
|
void |
flush()
主动flush缓冲区中的数据,该函数会等待缓冲区中的所有数据被flush完毕。
|
com.aliyun.openservices.ots.internal.OTSCallback<RowChange,ConsumedCapacity> |
getCallback()
获取设置的Callback。
|
long |
getTotalRPCCount() |
com.aliyun.openservices.ots.internal.writer.WriterConfig |
getWriterConfig()
获取限制项配置。
|
void |
setCallback(com.aliyun.openservices.ots.internal.OTSCallback<RowChange,ConsumedCapacity> callback)
设置Callback,数据写入成功或者失败均会通过Callback来反馈。
|
void |
startFlushTimer(int flushInterval) |
public DefaultOTSWriter(OTSAsync ots, String tableName, com.aliyun.openservices.ots.internal.writer.WriterConfig config, com.aliyun.openservices.ots.internal.OTSCallback<RowChange,ConsumedCapacity> callback, Executor executor)
public long getTotalRPCCount()
public void startFlushTimer(int flushInterval)
public void addRowChange(RowChange rowChange)
OTSWriterWriterConfig.maxPKColumnSize和WriterConfig.maxAttrColumnSize。
- 该行的属性列的个数是否超过WriterConfig.maxColumnsCount。
- 该行的大小是否超过WriterConfig.maxBatchSize。
- 属性列中是否有列名与主键列相同。
若在写入缓冲区之前被判定为脏数据,该部分数据不会触发CallBack的调用。
以上检查会在SDK端带来额外的CPU消耗,但是这些检查是必要的,为了减少不必要的RPC开销,以及避免脏数据污染同一批次Batch写入的行。
注意:若缓冲区满,则该操作会被block。
若判断该行为脏数据,该接口会抛出ClientException。addRowChange 在接口中 OTSWriterrowChange - 要写入的行public void addRowChange(List<RowChange> rowChanges, List<RowChange> dirtyRows) throws ClientException
OTSWriterOTSWriter.addRowChange(RowChange)一样的检查,若批量写入的行中存在脏数据,则该函数会抛ClientException,
且所有的脏数据会写入dirtyRows。addRowChange 在接口中 OTSWriterrowChanges - 批量写入的行dirtyRows - 用于传出脏数据的列表ClientException - 若存在脏数据public void setCallback(com.aliyun.openservices.ots.internal.OTSCallback<RowChange,ConsumedCapacity> callback)
OTSWriterOTSAsync中每个接口的Callback不同,其callback会与每个请求一一对应,且可以是独立的。
但是这里的Callback是与RowChange对应,且所有RowChange都共享该callback。setCallback 在接口中 OTSWriterpublic com.aliyun.openservices.ots.internal.OTSCallback<RowChange,ConsumedCapacity> getCallback()
OTSWritergetCallback 在接口中 OTSWriterpublic com.aliyun.openservices.ots.internal.writer.WriterConfig getWriterConfig()
OTSWritergetWriterConfig 在接口中 OTSWriterpublic void flush()
throws ClientException
OTSWriterflush 在接口中 OTSWriterClientExceptionpublic void close()
OTSWriterOTSWriter.addRowChange(com.aliyun.openservices.ots.model.RowChange)向缓冲区写入数据,则该部分数据不保证会写入OTS。Copyright © 2019. All Rights Reserved.