У меня есть некоторые данные в hbase, хранящиеся как байты и строки, объединенные с помощью \ x00 padding.Python UnicodeDecodeError: кодек 'utf8' не может декодировать байт 0x80 в позиции 74: недопустимый стартовый байт
Так строка в моей HBase выглядит следующим образом: -
00:00:00:00:00:00\x00\x80\x00\x00\x00U\xEF\xA0\xB00\x002\x0040.0.2.1\x00
Существует значение, соответствующее этой строке (ключ), который является описание 100.
Row: -
00:00:00:00:00:00 - This is mac address and is a string
\x80\x00\x00\x00U\xEF\xA0\xB00 - This is the time which is saved as bytes
2 - this is customer id number stored as string
40.0.2.1 - this is store ID stored as string
Я использовал базовый модуль звезды для подключения python к его серверу звездных врагов.
Вот мой фрагмент кода для подключения к StarBase и к столу Hbase, и попытаться извлечения из значения этой строки: -
from starbase import Connection
import starbase
C = Connection(host='10.10.5.2', port='60010')
get_table = C.table('dummy_table')
mac_address = "00:00:00:00:00:00"
time_start = "\x80\x00\x00\x00U\xEF\xA0\xB00"
cus_id = "2"
store_id = "40.0.2.1"
create_query = "%s\x00%s\x00%s\x00%s\x00" % (mac,time_start,cus_id,store_id)
fetch_result = get_table.fetch(create_query)
print fetch_result
Ожидаемый результат: -
100
You не нужно беспокоиться о соединении с starbase и его методах. Они работают просто отлично, если все было строкой, но теперь со временем преобразуются в байты, он дает мне ошибку: -
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 74: invalid start byte
Только в этом случае вы должны увидеть результат create_query, когда я распечатать его: -
00:00:1E:00:C8:36▒U▒v▒130.0.2.6
Я был бы очень признателен за помощь. Спасибо
Я пробовал ваше предложение, но это не сработало. Он не дает никаких ошибок, но дает ничего в качестве результатов. – Ray
Попробуйте заменить все \ x00 на \\ x00 в create_query. – iamads
Я тоже это пробовал. Даже это не работает @iamads – Ray