有关python starbase fetch函数获取字节和字符串数据的hbase面临的问题


0

我最近遇到了starbase模块,用于将python脚本 join到hbase。

我会给你一个简短的什么问题,我到底面临的,然后将分解一步一步给你一个清晰的形象。

我的hbase表中有一些数据叫做“dummyu table”。在此表中前面的 key都是由x00填充分隔的字符串。这是一个示例:-

00:00:00:00:00:00x001441767600x001x0040.0.2.1x00

现在我来 explain一下这些字段实际上是什么它们是:-

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

因为它们以前都是字符串,所以很容易获取与这些 key对应的值。

这是密码代码段:-

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 = '%sx00%sx00%sx00%sx00' % (mac,hours,cus_id,store_id)
fetch_result = get_table.fetch(create_query)
print fetch_result

前面的这段代码给了我一个哈希值

{count:100}

现在的问题是,由于hbase中的数据量非常大,因此为了提高性能,时间1441767600以8字节的形式存储在hbase中。

现在hbase中的行/ key类似于这是:-

00:00:00:00:00:00x00x80x00x00x00UxEFxA0xB0x001x0040.0.2.1x00

打破这个向下:-

00:00:00:00:00:00 - Mac address
x80x00x00x00UxEFxA0xB0 - 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 = '%sx00%sx00%sx00%sx00' % (mac,hours,cus_id,store_id)
fetch_result = get_table.fetch(create_query)
print fetch_result

当我运行这个时,结果是“无”。

有趣的是,当我直接访问我的hbase并对其运行get query时,它就 job 了。

get 'dummy_table', "00:00:00:00:00:00x00x80x00x00x00UxEFxA0xB0x001x0040.0.2.1x00", COLUMN => ['cf1:count:toLong']

输出如下:-

100

这是正确的。

有什么帮助吗?谢谢

1 答案


0

经过一番努力,我找到了另一个名为happybase的python模块,它将python join到hbase以获取/插入数据。

Happybase在这种情况下似乎 job 正常。https://happybase.readthedocs.org/en/latest/installation.html#安装-happybase套餐

星基扫描功能目前正在开发中。他们的网站上是这么写的。http://starbase.readthedocs.org/en/0.1/


我来回答

写文章

提问题

面试题