I've been trying to get up and running the HBase component, but ran into
issues:

After running around in circles for a bit, this works:

from("direct:hbaseConsumer")
        .setHeader("CamelHBaseValue", simple("Test Value", String.class))
        .setHeader("CamelHBaseRowId", simple("${random(10000)}",String.class))
        .setHeader("CamelHBaseFamily", simple("stats",String.class))
        .setHeader("CamelHBaseQualifier", simple("execute_time",String.class))
        .to("hbase:session?operation=CamelHBasePut");


This doesn't work (but according to the docs here
<http://camel.apache.org/hbase.html>, I would expect it to work). The
result is that it inserts a Row, but the value for stats/execute_time is
null:

from("direct:hbaseConsumer")
        .setHeader("CamelHBaseValue", simple("Test Value", String.class))
        .setHeader("CamelHBaseRowId", simple("${random(10000)}",String.class))
        
.to("hbase:session?operation=CamelHBasePut&family=stats&qualifier=execute_time");


I tried to debug the problem, and it seems that the HBaseCell object is
created, but not added to the row.  This seems to be caused by the fact
that we we're only looking for the family and qualifier in the headers, but
we don't use the URI default if not present in the headers. This happens in
HeaderMappingStrategy.resolveRow:

String columnFamily = (String)
message.getHeader(HbaseAttribute.HBASE_FAMILY.asHeader(index));
String columnName = (String)
message.getHeader(HbaseAttribute.HBASE_QUALIFIER.asHeader(index));
...
if (columnFamily != null && columnName != null) {
    ...
    hRow.getCells().add(hCell);

}

Then, at some point in the code, a new cell (with a null value) is added to
complete all of the missing family/qualifier pairs that were defined in the
URL.

Does this sound like a bug, or am I doing something wrong?

Thanks,

Andres

Reply via email to