142.8. HBase マッピング
デフォルトのマッピングストラテジーは ヘッダー と ボディの マッピングであることは前述しました。
以下に、各マッピングストラテジーがどのように機能するかの詳細な例をいくつか示します。
142.8.1. HBase ヘッダーマッピングの例
ヘッダーマッピングはデフォルトのマッピングです。値 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 |
以下に示すように、すべてのメッセージで一定と見なされるボイラープレートヘッダーを回避するために、それらをエンドポイント uri の一部として指定することもできます。
142.8.2. ボディーマッピングの例
ボディーマッピング戦略を使用するには、uri の一部としてオプション mappingStrategy を指定する必要があります。次に例を示します。
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);
上記のオブジェクトは、たとえば put 操作で使用でき、id myRowId の行を作成または更新し、値 myvalue を列 myfamily:myqualifier に追加します。
ボディマッピングストラテジーは、最初はあまり魅力的ではないように見えるかもしれません。ヘッダーマッピングストラテジーに対する利点は、HBaseData オブジェクトを xml/json との間で簡単に変換できることです。