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

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

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

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

表(从python客户端读取)

  1. for key, row in table.scan():
  2. print('\t{}: {}'.format(key,row))
  1. 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'}
  2. 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'}
  3. 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'}
  4. 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'}
  5. ...

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

  1. key
  2. > b'row000'
  3. col_name = 'cf1:col1'
  4. row[col_name.encode('utf-8')]
  5. > b'\xff'
  6. row[col_name.encode('utf-8')].decode('utf-8')

错误

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

暂无答案!

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

相关问题