Hi there. 



I recently read about your project and like the direction it is taking.  
Currently, I am a committer to another incubator project, Kalumet, and have 
been a long-time contributor to the Karaf and Camel projects. After talking 
with a few of the Accumulo project members, it looks like the most immediate 
hurdle is growing the user community.  I believe I can help with that.  



Making associations between incubator projects and top-level-projects has been 
a proven mechanism to pique developer interest and garner more dedicated 
contributors and commiters.  Because of the wide integration of Camel and NOSQL 
databases, creating a Camel component for interaction with Accumulo seems like 
a no-brainer.  



In order to help grow the Accumulo community, tonight I began writing a 
camel-accumulo component.  This will allow Camel users to route files to 
Accumulo in the same manner as they currently route files to HDFS .  





For some background, Camel is the open-source implementation of Enterprise 
Integration Patterns. Most modern ESB's use OSGI and Camel to perform routing 
and orchestration of data through endpoints. Camel has been written to allow 
various technologies to create Camel Components that folks can use when they 
define the route that a given file or data will be processed through. In this 
model, users would define a "route" in Camel that contains various Accumulo 
endpoints for reading, writing, or mutating data persisted through Accumulo. To 
make this work, I need to define a URI that folks will use.  Would you folks be 
able to help me define the URI and URL parameters? 



Right now, I'm using the URI "accum".  For the first iteration of this 
component, I'm thinking it would be simplest to create an endpoint folks could 
write a single re cord to. Then, follow it up with a scan, and mutate  
components. Once these are done, I'd like to do the batch-versions of these 
operations. 



In Camel, an endpoint usually looks similar to a web-service endpoint: 
URI://location/service ?[arg1=value1][&arg<x>=value<x>] 



With this in mind, I'm thinking the following would be the minimally acceptable 
Camel-Accumulo endpoint for simplistic write  operations: 

accum://location /write ?zookeeperName=value&\ 

tableName=value& \ 

userName=value&\ 

password=value&\ 

userPrivs=value&\ 

scanAuths=value&\ 

debug=value 



Does this contain a c omplete listing of the properties? A m I missing 
anything, did I put something in that's not needed, or are there other options 
a user should be able to pass in? Also, is the URI of "accum" ok for this camel 
component?  



Because Camel is written to play nicely inside of OSGI (like Karaf/Felix), the 
.jar files this camel component relies on should be bundle-ized. This shouldn't 
be too hard to do, and as a Karaf contributor, I've done this with hundreds of 
third party .jar files. Basically, we would replace the maven-jar-plugin with a 
light implementation of the maven-bundle-plugin along with some fairly generic 
attributes.  If you folks would like, I can do this for you on a seperate 
branch so that you can test it.  



Mike Van 

Committer - ASF Kalumet 

Contributor - ASF Karaf, Camel

Reply via email to