Return-Path: X-Original-To: apmail-accumulo-dev-archive@www.apache.org Delivered-To: apmail-accumulo-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 93AF39719 for ; Wed, 2 May 2012 16:27:52 +0000 (UTC) Received: (qmail 92963 invoked by uid 500); 2 May 2012 16:27:52 -0000 Delivered-To: apmail-accumulo-dev-archive@accumulo.apache.org Received: (qmail 92838 invoked by uid 500); 2 May 2012 16:27:52 -0000 Mailing-List: contact dev-help@accumulo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@accumulo.apache.org Delivered-To: mailing list dev@accumulo.apache.org Received: (qmail 92830 invoked by uid 99); 2 May 2012 16:27:52 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 May 2012 16:27:52 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [209.85.216.169] (HELO mail-qc0-f169.google.com) (209.85.216.169) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 May 2012 16:27:44 +0000 Received: by qcsd16 with SMTP id d16so639672qcs.0 for ; Wed, 02 May 2012 09:27:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding:x-gm-message-state; bh=BcfFozBZeMdH/drngG7WrVfAZH3nMefzxd3RjXB+qic=; b=J89OQ0YD0cJRm9uNSUm7AuBoO/bBCPu6Hdq2uaBHRBBMOEqWonE1XaxwndzmkOE0Fb yQP6qODSlHIR9URXaPJWIgdNWQIHZ1UcPoXUGKAARsgshvCkB1NIqfVRbfjq2LSxxsfm VE5kMsZ7bWi2d4l/Ws6lSttX1QxZMqZF5j2y9wyfHaZNZxTbUnT3bsuQQDxzVra5g5Kg OxgQauPIbcq10glgktwLeeBYdtpRCYG8UWMNEW/oel+m09eY4/aSHw+1mVtboQlT7jzY guVh5mhdefctA5vnATgwjX9MOqXzuRu2NCzRYSBL+nT4RPLmqKwXjxEffZycB6rb55fG yolA== MIME-Version: 1.0 Received: by 10.224.175.69 with SMTP id w5mr21037213qaz.49.1335976043572; Wed, 02 May 2012 09:27:23 -0700 (PDT) Received: by 10.229.155.206 with HTTP; Wed, 2 May 2012 09:27:23 -0700 (PDT) In-Reply-To: References: Date: Wed, 2 May 2012 12:27:23 -0400 Message-ID: Subject: Re: Python client lib for Accumulo? From: Keith Turner To: dev@accumulo.apache.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Gm-Message-State: ALoCoQmh7t8NQVRlDk5Yozx6KDIprd5ZsfVxP2/Ia2lcJVdcIWzezfQ47oYj0eInAd5S2Vdz+nyU On Wed, May 2, 2012 at 11:31 AM, Jason Trost wrote: > I noticed that there are no JIRAs for a python client > interface/lib/API for Accumulo. =A0How involved would it be to develop > AND maintain a python client for Accumulo? > > I realize that Jython can be used, but I am interested in a native > python lib that can be use more broadly with systems that don't work > with Jython. > > In order to do this, it seems like we would need to: > 1. generate the python thrift bindings code (this is trivial) > 2. develop and maintain the python glue code to use the thrift code > and python zookeeper code to interact with the various accumulo > components. =A0The current Java "glue" code looks quite long. =A0How ofte= n > does this code change (in terms of new features or changes in > protocol, not bug fixes)? > I would advise against rewriting the accumulo client code in python. The code that finds tablets, retries in case of failure, parallelizes read/writes, etc is fairly complex. I think the proxy option is best. David and Eric mentioned REST and Thrift proxies. If we were to go to down the route of writing the client code in another language, I think C++ with a C API would be the best option because many language can easily bind to a C API. > Ideally the python API would be very similar to the Java interface > (Connector, Instance, Scanner, BatchScanner, BatchWriter, Key, Value, > Mutation, etc). > > I guess what I am trying to get at is, does the Accumulo dev community > think it's worth the time and effort to develop and maintain a python > API? =A0I personally think it is in order to help with adoption and > integration with other systems (Django is the primary system I want to > be able to use with it). =A0I have some time to help this along, but I > don't think I have enough time to take this on alone. =A0Is anyone else > interested in working together on this? > > Thanks, > > --Jason