BigTable - можете ли вы хранить логические значения? - PullRequest
0 голосов
/ 17 января 2019

Можно ли хранить логические значения?

Я попытался сохранить значение True в BigTable и получил сообщение об ошибке:

TypeError: True не может быть преобразовано в байты

Глядя на код в GitHub , использовалась функция _to_bytes, которая выдает ошибку, если не может быть преобразована в байты.

Есть ли рекомендуемый способ хранения логических данных? Или я должен просто привести True / False и затем не забыть преобразовать значения обратно в Boolean при получении данных?

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Так HBase преобразует логические значения в байты в Bytes.java:

  public static byte [] toBytes(final boolean b) {
    return new byte[] { b ? (byte) -1 : (byte) 0 };
  }

Java cloud-bigtable-client рекомендует пользователям Java использовать этот класс для преобразования примитивов в значения. Вероятно, в других библиотеках должен быть подобный класс, чтобы способствовать распространению конверсий.

0 голосов
/ 17 января 2019

Вы не можете хранить логический тип в BigTable, используя Python.

Это то, что документация говорит о типах данных, которые могут храниться в BigTable:

Cloud Bigtable для большинства целей рассматривает все данные как необработанные байтовые строки

Таким образом, кажется, что лучший вариант, который у вас есть, это, как вы сказали, приводить «True / False» в виде строк и преобразовывать данные обратно в логические значения, когда вы их получаете.

...