128
微信
多方式写入__高级特性_DataHub实时数据通道_大数据计算服务-阿里云
多方式数据写入(Hash/PartitionKey)
DataHub服务支持三种写入方式:
按ShardID写入
指定写入某个Shard,该场景主要用于用户需要保证每个通道中数据有序,因此需要将部分数据指定写入到某个Shard中。样例代码:
// 新建client
Account account = new AliyunAccount("your access id", "your access key");
DatahubConfiguration conf = new DatahubConfiguration(account, "datahub endpoint");
DatahubClient client = new DatahubClient(conf);
// 构造需要上传的records
RecordSchema schema = client.getTopic("projectName", "topicName").getRecordSchema();
List<RecordEntry> recordEntries = new ArrayList<~>();
RecordEntry entry = new RecordEntry(schema);
for (int i=0; i<entry.getFieldCount(); i++) {
entry.setBigint(i, 1);
}
entry.setShardId("shardId");
recordEntries.add(entry);
// 数据写入
client.putRecords("projectName", "topicName", recordEntries);
按HashKey写入
指定一个128 bit的MD5值。 按照HashKey写入,根据Shard的beginHashKey与endHashKey决定数据写入的Shard。
该种方式的写入场景主要用于用户不关心数据的写入顺序,根据某个字段值或用户维护的key来进行写入。
// 新建client
Account account = new AliyunAccount("your access id", "your access key");
DatahubConfiguration conf = new DatahubConfiguration(account, "datahub endpoint");
DatahubClient client = new DatahubClient(conf);
// 构造需要上传的records
RecordSchema schema = client.getTopic("projectName", "topicName").getRecordSchema();
List<RecordEntry> recordEntries = new ArrayList<~>();
RecordEntry entry = new RecordEntry(schema);
for (int i=0; i<entry.getFieldCount(); i++) {
entry.setBigint(i, 1);
}
entry.setHashKey("7FFFFFFFFFFFFFFD7FFFFFFFFFFFFFFD");
recordEntries.add(entry);
// 数据写入
client.putRecords("projectName", "topicName", recordEntries);
按PartitionKey写入
指定一个String类型参数作为PartitionKey,系统根据该String的MD5值以及Shard的beginHashKey与endHashKey决定写入的Shard。
该种方式的应用场景与按HashKey写入方式类似,区别在于用户不需要提供固定范围的HashKey,而是通过一个字符串Key,系统会计算出其对应的HashKey进行写入。
// 新建client
Account account = new AliyunAccount("your access id", "your access key");
DatahubConfiguration conf = new DatahubConfiguration(account, "datahub endpoint");
DatahubClient client = new DatahubClient(conf);
// 构造需要上传的records
RecordSchema schema = client.getTopic("projectName", "topicName").getRecordSchema();
List<RecordEntry> recordEntries = new ArrayList<~>();
RecordEntry entry = new RecordEntry(schema);
for (int i=0; i<entry.getFieldCount(); i++) {
entry.setBigint(i, 1);
}
entry.setPartitionKey("TestPartitionKey");
recordEntries.add(entry);
// 数据写入
client.putRecords("projectName", "topicName", recordEntries);
最后更新:2016-11-23 18:01:58
上一篇:
扩容缩容Merge/Split__高级特性_DataHub实时数据通道_大数据计算服务-阿里云
下一篇:
批量数据通道概要__SDK介绍_批量数据通道_大数据计算服务-阿里云
接入协议__设备基于MQTT接入_设备端接入手册_阿里云物联网套件-阿里云
获取任务信息__SDK接口说明_Java版SDK_批量计算-阿里云
服务配置__产品管理_控制台使用手册_阿里云物联网套件-阿里云
日志清洗中系统字段介绍__最佳实践_业务实时监控服务 ARMS-阿里云
产品发行版本更新记录__更新记录_产品简介_E-MapReduce-阿里云
搜索文件__管理文件_控制台用户指南_对象存储 OSS-阿里云
查询媒体-使用OSS文件地址__媒体接口_API使用手册_视频点播-阿里云
迁移数据__用户指南_云数据库 MongoDB 版-阿里云
单IP多HTTPS域名场景下的解决方案__最佳实践_HTTPDNS-阿里云
管理报警规则__应用分组_用户指南_云监控-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云