微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BigTable-Python - 如何在 Python 中解码 PrimitiveType?

如何解决BigTable-Python - 如何在 Python 中解码 PrimitiveType?

如何使用 GCP Python clients 解码 BigTable 数据?

我正在尝试将 utf-8 作为 recommended 但没有成功。下面的例子只显示了 boolean 类型的问题,但其他类型会导致其他解码问题。

请注意,该表是使用带有 "tableCoder":"PrimitiveType"GCP instructionsHortonworks "SHC" connectorthose steps)的 Spark 2.4 创建的。

有什么想法吗?

表格(从 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 client读取)

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。