我最近遇到了starbase模块,用于将我的python脚本连接到hbase。
我将简要介绍一下我面临的问题,然后逐步将其分解,以便为您提供清晰的图像。
我的hbase表中有一些名为'dummy_table'的数据。之前,此表中的键是由\ x00填充分隔的所有字符串。这是一个例子: -
00:00:00:00:00:00\x001441767600\x001\x0040.0.2.1\x00
现在我将解释实际上的字段: -
00:00:00:00:00:00 - This is the mac address
1441767600 - This is the time in epoch (Wed Sep 9 03:00:00 UTC 2015)
1 - this is the customer id
40.0.2.1 - this is store id
因为它们之前都是字符串所以很容易获取与这些键相对应的值。
以下是代码段: -
from starbase import Connection
import starbase
C = Connection(host='10.10.122.136', port='60010')
get_table = C.table('dummy_table')
mac = "00:00:00:00:00:00"
hours = "1441767600"
cus_id = "1"
store_id = "40.0.2.1"
create_query = '%s\x00%s\x00%s\x00%s\x00' % (mac,hours,cus_id,store_id)
fetch_result = get_table.fetch(create_query)
print fetch_result
之前这段代码用来给我一个确切的值,这是一个哈希
{count:100}
现在,问题是1441767600的时间以8字节的形式存储在hbase中以获得更好的性能,因为hbase中的数据量非常大。
现在,hbase中的行/键看起来像这样: -
00:00:00:00:00:00\x00\x80\x00\x00\x00U\xEF\xA0\xB0\x001\x0040.0.2.1\x00
打破这种局面: -
00:00:00:00:00:00 - Mac address
\x80\x00\x00\x00U\xEF\xA0\xB0 - time in bytes (1441767600 if converted into long from bytes)
1 - customer id
40.0.2.1 - store_id
现在,如果我使用最少的更改运行类似的代码,以便python将字节作为字符串,则它不起作用。 以下是代码段: -
from starbase import Connection
import starbase
C = Connection(host='10.10.122.136', port='60010')
get_table = C.table('dummy_table')
mac = "00:00:00:00:00:00"
hours = "\\x80\\x00\\x00\\x00U\\xEF\\xA0\\xB0"
cus_id = "1"
store_id = "40.0.2.1"
create_query = '%s\x00%s\x00%s\x00%s\x00' % (mac,hours,cus_id,store_id)
fetch_result = get_table.fetch(create_query)
print fetch_result
当我运行它时,它会给我“无”作为结果。
有趣的是,当我直接访问我的hbase并运行get查询时,它可以工作。 这是相同的hbase get查询: -
get 'dummy_table', "00:00:00:00:00:00\x00\x80\x00\x00\x00U\xEF\xA0\xB0\x001\x0040.0.2.1\x00", COLUMN => ['cf1:count:toLong']
这将输出为: -
100
这是正确的。 我已经搜索了很多,但我没有遇到任何可以解决我的问题。
有任何帮助吗?感谢
答案 0 :(得分:0)
经过一番努力,我找到了另一个名为happybase的python模块,它将python连接到hbase以获取/插入数据。
在这种情况下,Happybase似乎正常工作。 https://happybase.readthedocs.org/en/latest/installation.html#installing-the-happybase-package
Starbase扫描功能目前正在开发中。多数民众赞成在他们的网站上说的话。 http://starbase.readthedocs.org/en/0.1/