bigtable python-如何在python中解码primitivetype?

vfwfrxfs  于 2021-07-13  发布在  Hbase
关注(0)|答案(0)|浏览(221)

如何使用gcp python客户端解码bigtable数据?
我在努力 utf-8 按照建议,但没有成功。下面的示例仅显示布尔类型的问题,但其他类型会导致其他解码问题。
请注意,该表是使用spark 2.4和 "tableCoder":"PrimitiveType" (gcp说明、hortonworks“shc”连接器和这些步骤)。
你知道吗?
表(从spark读取)

+------+-----+----+----+
|  col0| col1|col2|col3|
+------+-----+----+----+
|row000| true| 0.0|   0|
|row001|false| 1.0|   1|
|row002| true| 2.0|   2|
|row003|false| 3.0|   3|
...

表(从python客户端读取)

for key, row in table.scan():
    print('\t{}: {}'.format(key,row))
b'row000': {b'cf1:col1': b'\xff', b'cf2:col2': b'\x00\x00\x00\x00\x00\x00\x00\x00', b'cf3:col3': b'\x00\x00\x00\x00'}
b'row001': {b'cf1:col1': b'\x00', b'cf2:col2': b'?\xf0\x00\x00\x00\x00\x00\x00', b'cf3:col3': b'\x00\x00\x00\x01'}
b'row002': {b'cf1:col1': b'\xff', b'cf2:col2': b'@\x00\x00\x00\x00\x00\x00\x00', b'cf3:col3': b'\x00\x00\x00\x02'}
b'row003': {b'cf1:col1': b'\x00', b'cf2:col2': b'@\x08\x00\x00\x00\x00\x00\x00', b'cf3:col3': b'\x00\x00\x00\x03'}
...

尝试解码第一个值(来自python客户端)

key
> b'row000'

col_name = 'cf1:col1'

row[col_name.encode('utf-8')]
> b'\xff'

row[col_name.encode('utf-8')].decode('utf-8')

错误

> Traceback (most recent call last):
> File "<ipython-input-116-14960001f95a>", line 1, in <module>
    row[col_name.encode('utf-8')].decode('utf-8')
> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题