This is great. Thanks for such awesome ting!

On Sat, Feb 13, 2010 at 1:54 PM, Mateusz Berezecki <[email protected]>wrote:

> Hi Masha
>
> This is awesome news. I'll check it out and prepare patches if you don't
> mind.
>
> Thanks for a great job!
>
> And yes, thrift does not feel solid at all!;-)
>
> Mateusz
>
> On Feb 13, 2010, at 0:14, Masha <[email protected]> wrote:
>
>  Hello
>>
>> I have fixed the Python bindings to reflect the modern Hypertable and
>> boost versions.
>>
>> Using the python bindings, 'select *' over a large dataset is about 20
>> times faster than using the Thrift (I tested in on a single Linux-x64
>> server, Thrift client eat CPU a lot).
>>
>>
>> Also, The API is slightly improved:
>> 1. TableScanner can act as an iterable object emitting Cell
>>
>> # how it was
>>
>> scanner = table.create_scanner(scan_spec)
>> cell = ht.Cell()
>> while scanner.next(cell):
>>  print "%s:%s %s" % (cell.row_key, cell.column_family, cell.value())
>>
>> # how it is
>>
>> for cell in table.create_scanner(scan_spec):
>>  print "%s:%s %s" % (cell.row_key, cell.column_family, cell.value)
>>
>> # or even simpler
>>
>> for cell in client.hql("select * from table"):
>>  print "%s:%s %s" % (cell.row_key, cell.column_family, cell.value)
>>
>> #--------------------------
>>
>> 2. client.hql("select ...") returns TableScanner
>>  client.hql("show tables") returns python list, both of them are
>> iterables
>>
>> 3. cell.value now is a getter, the parenthesis are not required.
>>
>> 4. Parameter of Client constructor is a path to 'hypertable.cfg', not
>> the path to the installation directory.
>>  Hypertable libraries deep inside use path to the executable as a
>> starting point to find 'hypertable.cfg'.
>>  It fails in case if the executable is '/usr/bin/python'.
>>
>>  As it is intended to be used on a client, it must work without full
>> Hypertable installation, and must work with more than one hypertable
>> server.
>>
>>  Required files are to copy from the full installation: 'ht.so'
>> 'libHyperComm.so' 'libHyperCommon.so' 'libHyperTools.so'
>> 'libHyperspace.so' 'libHypertable.so'
>>  And, of course, 'hypertable.cfg'
>>
>> It is my first experience with boost:python and I'm not sure if it is
>> correct to wrap pointers (TablePtr, TableMutatorPtr) instead of the
>> the objects.
>> So I suppose there could be some memory leaks, I have not investigated
>> it yet.
>> (I tried to wrap the objects  - Table, TableMutator, TableScanner -
>> but then I do not know how to return either TableScanner or list from
>> client.hql(), with the pointers it is easy, so I get back to use
>> them).
>>
>> Compiling of the python bindings does not depend on hypertable
>> compilation process and can be done independently later.
>> Just run 'python setup.py build'.
>> But note that hypertable libraries must be compiled with -
>> DBUILD_SHARED_LIBS=ON (precompiled binaries from hypertable.org do
>> not).
>>
>> I put the code here for a while (sorry, I do not know how to use
>> git):
>> http://code.google.com/p/python-hypertable/source/browse/trunk/
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Hypertable Development" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<hypertable-dev%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/hypertable-dev?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Hypertable Development" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/hypertable-dev?hl=en.

Reply via email to