2016-05-19 9 views
0

私はHbaseテーブルにアクセスするためにhappybaseを使用しようとしています。列ファミリがバイト文字列として返されるため、happybaseを使用するKeyError

私はhappybase githubリポジトリからpython3ブランチを使用しています。

は、ここに私のテストコードです:私はこれを実行すると、列ファミリは、バイト文字列として返されるため

import happybase 
from settings import HBASE_THRIFT_SERVER 

connection = happybase.Connection(HBASE_THRIFT_SERVER) 
print(connection.tables()) 
table = connection.table('people') 


def get_audience(audience_qual,start,end): 
    row = table.row(audience_qual) 
    print(row) 
    return row['data:record'] 


def get_all_audience(): 
    for key, data in table.scan(): 
     print(key, data) 


def put_people_row(row_key, people): 
    table.put(row_key, {'data:record': people}) 

if __name__ == '__main__': 
    get_all_audience() 
    print(get_audience('daily201605180000004', 0, 0)) 

私は行のキーエラーになっています。

2016-05-18 21:04:10,843 DS-Client-Dashboard INFO  Settings Loaded 
[b'ambarismoketest', b'people', b'tsdb', b'tsdb-meta', b'tsdb-tree', b'tsdb-uid'] 
b'daily201604030000001' {b'data:': b'{"clientid":1, "customerid":23499382}'} 
b'daily201605180000002' {b'data:record': b'{"clientid": 2, "customerid": 2383020475}'} 
b'daily201605180000003' {b'data:record': b'{"clientid": 2, "customerid": 2383020475}'} 
b'daily201605180000004' {b'data:record': b'{"clientid": 2, "customerid": 2383020475}'} 
{b'data:record': b'{"clientid": 2, "customerid": 2383020475}'} 
Traceback (most recent call last): 
    File "/home/user100/ds_one_api/app/V1/hbase_operations.py", line 25, in <module> 
    print(get_audience('daily201605180000004', 0, 0)) 
    File "/home/user100/ds_one_api/app/V1/hbase_operations.py", line 12, in get_audience 
    return row['data:record'] 
KeyError: 'data:record' 

Process finished with exit code 1 

ハッピーベースのドキュメントでは、列ファミリを動作させるための変換が表示されません。しかし、HBaseはハッファーベースが処理できないバイト文字列としてデータを格納することに言及しています。

キーエラーのない行から列ファミリを返すにはどうすればよいですか?

答えて

1
return row[b'data:record'] 

正常に動作します。

関連する問題