Есть ли способ сбросить логический объект в Cloud BigTable? - PullRequest
3 голосов
/ 06 февраля 2020

У меня есть определенный сценарий использования, когда сервис API извлекает строки BigTable, используя rowKey. Проблема, с которой я сталкиваюсь, заключается в том, что служба API пытается извлечь некоторые столбцы с логическим значением и выполняет логическое сравнение на внешней стороне. Поскольку BigTable не поддерживает этот тип данных. Часть сравнения внешнего интерфейса не работает должным образом. Я использую приведенный ниже код для хранения логического значения в BigTable.

                    Boolean value = Boolean.parseBoolean(newImageMap.get(Key).toString());
                    SetCell setCell = SetCell.newBuilder()
                            .setFamilyName(Utility.COLUMN_FAMILY)
                            .setColumnQualifier(Utility.str_to_bb(Key,StandardCharsets.UTF_8))
                            .setTimestampMicros(yearAgoMillis)
                            .setValue(ByteString.copyFrom(Bytes.toBytes(value)))
                        //  .setValue(Utility.str_to_bb(String.valueOf(value),StandardCharsets.UTF_8))
                            .build();

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

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

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

Чтобы работать с текущей настройкой, вы можете просто сравнить свои результаты против "истинной" и "ложной" строки. Похоже, это не то, что вы хотите сделать, основываясь на вашем обсуждении в комментариях с Pievis.

Итак, чтобы преобразовать текущую настройку: вы должны использовать 0 как false и 1 как true (или вы можете оставить пустым как false). Это будет более эффективно для пробела. А затем, чтобы преобразовать все ваши существующие значения, вам нужно будет выполнить полную фильтрацию таблицы по значению «true», а затем обновить эти ячейки до 1, а затем отфильтровать по значению «false», где вы удаляете эти ячейки. клетки.

0 голосов
/ 14 февраля 2020

Сброс логического объекта в BigTable невозможен, так как BigTable не поддерживает логический тип данных. Скорее я предложу вам внести изменения в код вашего драйвера и набрать регистр типа данных в подходящую форму и отправить его на внешнюю сторону, что было бы более подходящим. Для этого вы должны предварительно идентифицировать логический тип данных со стороны источника и сохранить его как конфигурацию, которая будет входом для кода драйвера. Дайте мне знать, если это решение сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...