143.8. HBase Mapping
上面提到了默认的映射策略是 标头和正文 映射。
您可以在下面找到有关每个映射策略的工作方式的详细示例。
143.8.1. HBase Header 映射示例
标头映射是默认的映射。将值 "myvalue" 放入 HBase row "myrow",列 "myfamily:mycolum",消息应包含以下标头:
标头 | value |
---|---|
CamelHBaseRowId | myrow |
CamelHBaseFamily | myfamily |
CamelHBaseQualifier | myqualifier |
CamelHBaseValue | myValue |
要为不同的列和 / 或不同的行放置更多值,您可以使用标头的索引指定附加标头后缀,例如:
标头 | value |
---|---|
CamelHBaseRowId | myrow |
CamelHBaseFamily | myfamily |
CamelHBaseQualifier | myqualifier |
CamelHBaseValue | myValue |
CamelHBaseRowId2 | myrow2 |
CamelHBaseFamily2 | myfamily |
CamelHBaseQualifier2 | myqualifier |
CamelHBaseValue2 | myvalue2 |
如果检索操作,如 get 或 scan,您也可以为每个列指定您要将数据转换为的类型。对于考试:
标头 | value |
---|---|
CamelHBaseFamily | myfamily |
CamelHBaseQualifier | myqualifier |
CamelHBaseValueType | Long |
请注意,为了避免对所有消息保持恒定的样板标头,您也可以将它们指定为端点 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 创建或更新行,并将值 myfamily:myqualifier 添加到列 myfamily:myqualifier 中。
正文映射策略最初看似没有非常满意。它相对于标头映射策略的好处是,可以将 HBaseData 对象轻松转换为 xml/json。