143.8. HBase 매핑
기본 매핑 전략은 헤더 및 본문 매핑이라는 점을 언급했습니다.
아래에서 각 매핑 전략이 작동하는 방법에 대한 자세한 예를 찾을 수 있습니다.
143.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과 같은 검색 작업의 경우 각 열에 대해 데이터를 변환할 유형을 지정할 수도 있습니다. Exampe의 경우:
헤더 | 현재의 |
---|---|
CamelHBaseFamily | myfamily |
CamelHBaseQualifier | myqualifier |
CamelHBaseValueType | long |
모든 메시지에 대해 일정으로 간주되는 상용구 헤더를 방지하기 위해 아래 표시된 것처럼 끝점 uri의 일부로 지정할 수도 있습니다.
143.8.2. 본문 매핑 예
본문 매핑 전략을 사용하려면 uri의 일부로 option 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로 행을 생성하거나 업데이트하고 myfamily:myqualifier 열에 myvalue 값을 추가합니다.
본문 매핑 전략이 처음에는 바람직하지 않은 것처럼 보일 수 있습니다. 헤더 매핑 전략에 비해 장점은 HBaseData 개체를 xml/json으로 쉽게 변환할 수 있다는 것입니다.