143.8. HBase Mapping
上面提到过默认映射策略是 标头和正文 映射。
您可以参阅每个映射策略如何工作的一些详细示例。
143.8.1. HBase Header 映射示例
标头映射是默认映射。将值 "myvalue" 置于 HBase 行 "myrow" 中,并列 "myfamily:mycolum",消息应包含以下标头:
标头 | 值 |
---|---|
CamelHBaseRowId | myrow |
CamelHBaseFamily | myfamily |
CamelHBaseQualifier | myqualifier |
CamelHBaseValue | myvalue |
要为不同的列和 / 或不同的行放置更多值,您可以使用标头的索引指定额外的标头后缀,例如:
标头 | 值 |
---|---|
CamelHBaseRowId | myrow |
CamelHBaseFamily | myfamily |
CamelHBaseQualifier | myqualifier |
CamelHBaseValue | myvalue |
CamelHBaseRowId2 | myrow2 |
CamelHBaseFamily2 | myfamily |
CamelHBaseQualifier2 | myqualifier |
CamelHBaseValue2 | myvalue2 |
如果是检索操作,如 get 或 scan,您也可以为每个列指定您希望数据转换为的类型。对于考试:
标头 | 值 |
---|---|
CamelHBaseFamily | myfamily |
CamelHBaseQualifier | myqualifier |
CamelHBaseValueType | Long |
请注意,为了避免被视为所有消息的样板标头,您也可以将它们指定为 endpoint uri 的一部分,如下所示。
143.8.2. 正文映射示例
要使用正文映射策略,您必须将选项 mappingStrategy 指定为 uri 的一部分,例如:
hbase:mytable?mappingStrategyName=body
要使用正文映射策略,正文需要包含 org.apache.camel.component.hbase.model.HBaseData 的实例。您可以构建 t
HBaseData data = new HBaseData(); HBaseRow row = new HBaseRow(); row.setId("myRowId"); HBaseCell cell = new HBaseCell(); cell.setFamily("myfamily"); cell.setQualifier("myqualifier"); cell.setValue("myValue"); row.getCells().add(cell); data.addRows().add(row);
上面的对象可用于放置操作,并将导致创建或更新 ID 为 myRowId 的行,并将值 myvalue 添加到列 myfamily:myqualifier 中。
正文映射策略可能根本不会非常好。它相对于标头映射策略的好处是,HBaseData 对象可以轻松地转换为或从 xml/json 转换为或来自 xml/json。