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-阿裏雲