赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 服务支持
  5. 常见问题
  6. APISDK
  7. 使用 Java SDK 写入数据时报错:The count of attribute columns exceeds the maximum128

使用 Java SDK 写入数据时报错:The count of attribute columns exceeds the maximum128

  • APISDK
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

问题现象

使用表格存储 Java SDK 写入数据时出现如下报错:

The count of attribute columns exceeds the maximum:128

原因分析

使用TableStoreWriter工具类写入数据时,默认的属性列写入个数上限为128。

解决方案

使用 Java SDK 初始化 TableStoreWriter 时,可以通过修改 MaxColumnsCount 参数来提高属性列写入个数的上限。最高可以设置为1024,即一行最多写入1024个属性列。

运行代码前,请在系统环境变量中配置阿里云账号或RAM用户的AccessKey信息。具体操作,请参见配置访问凭证。
// yourInstanceName 填写您的实例名称
final String instanceName = "yourInstanceName";
// yourEndpoint 填写您的实例访问地址
final String endPoint = "yourEndpoint";
// 获取环境变量里的 AccessKey ID 和 AccessKey Secret
String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");

ClientConfiguration cc = new ClientConfiguration();
cc.setRetryStrategy(new DefaultRetryStrategy()); // 可定制重试策略,如果需要保证数据写入成功率,可采用更激进的重试策略。
AsyncClient asyncClient = new AsyncClient(endPoint, accessKeyId, accessKeySecret, instanceName, cc);

// 初始化
WriterConfig config = new WriterConfig();
config.setMaxBatchSize(4 * 1024 * 1024); // 配置一次批量导入请求的大小限制,默认值为 4 MB。
config.setMaxColumnsCount(128); // 配置一行的列数的上限,默认值为 128。
config.setBufferSize(1024); // 配置内存中最多缓冲的数据行数,默认值为 1024,必须是 2 的指数倍。
config.setMaxBatchRowsCount(100); // 配置一次批量导入的行数上限,默认值为 100。
config.setConcurrency(10); // 配置最大并发数,默认值为 10。
config.setMaxAttrColumnSize(2 * 1024 * 1024); // 配置属性列的值大小上限,默认值为 2 MB。
config.setMaxPKColumnSize(1024); // 配置主键列的值大小上限,默认值为 1 KB。
config.setFlushInterval(10000); // 配置缓冲区 flush 的时间间隔,默认值为 10。单位为秒。

// 配置一个 callback ,OTSWriter 通过该 callback 反馈哪些导入成功,哪些行导入失败,该 callback 只简单的统计写入成功和失败的行数。
AtomicLong succeedCount = new AtomicLong();
AtomicLong failedCount = new AtomicLong();
TableStoreCallback<RowChange, ConsumedCapacity> callback = new SampleCallback(succeedCount, failedCount);
ExecutorService executor = Executors.newFixedThreadPool(2);
TableStoreWriter tablestoreWriter = new DefaultTableStoreWriter(asyncClient, tableName, config, callback, executor);

关于 TableStoreWriter 的更多信息,请参见使用TableStoreWriter并发写入数据。

相关文章

使用Java SDK访问表格存储时出现SocketTimeoutException异常 2025-04-22 14:18

由于网络不通或网络抖动、服务器高负载、客户端Full GC等原因可能会导致客户端访问表格存储超时。当出现客户端访问超时的问题时,您需要通过检查网络连通性、服务器延迟、客户端是否出现Full GC问题等操作来解决该问题。 问题现象 使用Java SDK访问表格存储时出现Unexpected error

Java SDK日志库相关问题 2025-04-22 14:18

表格存储Java SDK使用的是哪个日志库? 表格存储Java SDK依赖的是slf4j,在依赖中默认依赖log4j2作为日志实现库。</

使用SDK时出现Validate PK type fail异常 2025-04-22 14:18

当使用SDK出现Validate PK type fail异常时,请确保设置的主键数据类型和数据表的主键数据类型一致。 问题现象 使用SDK写入数据时出现如下异常:

使用SDK时出现Validate PK size fail异常 2025-04-22 14:18

当使用SDK出现Validate PK size fail异常时,请确保设置的主键个数和数据表的主键个数一致。 问题现象 使用SDK更新数据时出现如下异常:

使用SDK时出现Validate PK name fail异常 2025-04-22 14:18

当使用SDK时出现Validate PK name fail异常时,请确保设置的主键名称与主键顺序和数据表的主键名称与主键顺序一致。 问题现象 使用SDK查询数据时出现如下异常:

使用Java SDK时出现The access key id is invalid异常 2025-04-22 14:18

现象 使用Java SDK时出现如下异常:

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号