Длинный байтовый массив Python to Java (HBase) - PullRequest
0 голосов
/ 28 мая 2018

Я использую HBase для хранения длинных значений в приложении hadoop. Они хранятся следующим образом, поскольку сигнатуры метода HBase работают в байтовых массивах:

Bytes.toBytes(timestamp)

Где timestamp - это long.

Это, в свою очередь, используется в других частях приложения, как это

Bytes.toLong(scanResult.getValue("main", "ts"))

Итак, мы знаем, что это согласованно и правильно хранится.

Это примерная временная меткасохранено: 1527529282000 На стороне java это преобразуется в байтовый массив:

[0, 0, 0, 0, 91, 12, 63, 66]

Я пытаюсь написать задачу на языке cethon для проверки конвейера hadoop с несколькими конкретными случаями, установленными каждыйдень.

Для этого мне нужно написать такую ​​же информацию с помощью happybase

Я уже могу создать строку аналогичным образом:

hbase_timestamp = struct.pack('l', timestamp)
profiles_htable.put(hbase_row, {'main:ts': hbase_timestamp})

Проблема в том, что когда я декодирую это на стороне Java, значение совершенно неверное.

Это то, что восстанавливает тот же Java-декодер:

-3451490525482254

И этобайтовый массив, который фактически был сохранен кодом Python:

[-48, 25, -41, -89, 99, 1, 0, 0]

Как я могу хранить длинное значение, которое будет точно декодировано в Java как байтовый массив из Python?

...