141.4.4. 放置操作.
HBase 是一个基于列的存储,允许您将数据存储到特定行的特定列中。列分组为家庭,因此为了指定列,您需要指定该列系列和该列的限定符。要将数据存储至特定列中,您需要同时指定列和行。
将数据存储为来自 camel 路由的 HBase 最简单的方案是存储消息正文的一部分到指定的 HBase 列。
<route> <from uri="direct:in"/> <!-- Set the HBase Row --> <setHeader headerName="CamelHBaseRowId"> <el>${in.body.id}</el> </setHeader> <!-- Set the HBase Value --> <setHeader headerName="CamelHBaseValue"> <el>${in.body.value}</el> </setHeader> <to uri="hbase:mytable?operation=CamelHBasePut&family=myfamily&qualifier=myqualifier"/> </route>
上面的路由假定消息正文包含一个对象,它有一个 id 和 value 属性,并将值内容存储在 id 指定的行中的 HBase 列中 myfamily:myqualifier 中。如果需要指定多个列/值对,只需指定额外的列映射。请注意,您必须使用第二条标题、eg RowId2、RowId3、RowId4 等数字。只有 1st 标头没有数字 1。
<route> <from uri="direct:in"/> <!-- Set the HBase Row 1st column --> <setHeader headerName="CamelHBaseRowId"> <el>${in.body.id}</el> </setHeader> <!-- Set the HBase Row 2nd column --> <setHeader headerName="CamelHBaseRowId2"> <el>${in.body.id}</el> </setHeader> <!-- Set the HBase Value for 1st column --> <setHeader headerName="CamelHBaseValue"> <el>${in.body.value}</el> </setHeader> <!-- Set the HBase Value for 2nd column --> <setHeader headerName="CamelHBaseValue2"> <el>${in.body.othervalue}</el> </setHeader> <to uri="hbase:mytable?operation=CamelHBasePut&family=myfamily&qualifier=myqualifier&family2=myfamily&qualifier2=myqualifier2"/> </route>
务必记住,您可以使用 uri 选项、邮件标题或两者的组合。建议将恒定值指定为 uri 和动态值作为标头。如果某些内容都定义为标题和 uri 的一部分,则将使用标题。