【发布时间】:2019-01-17 09:12:51
【问题描述】:
是否可以存储布尔值?
我尝试在 BigTable 中存储一个 True 值,并收到错误消息:
TypeError: True 无法转换为字节
查看GitHub中的代码,使用了函数_to_bytes,如果不能转换为字节则会抛出错误。
是否有推荐的存储布尔数据的方法?还是我应该只转换 True/False,然后记住在检索数据时将值转换回布尔值?
【问题讨论】:
是否可以存储布尔值?
我尝试在 BigTable 中存储一个 True 值,并收到错误消息:
TypeError: True 无法转换为字节
查看GitHub中的代码,使用了函数_to_bytes,如果不能转换为字节则会抛出错误。
是否有推荐的存储布尔数据的方法?还是我应该只转换 True/False,然后记住在检索数据时将值转换回布尔值?
【问题讨论】:
这就是 HBase 将布尔值转换为 Bytes.java 中的字节的方式:
public static byte [] toBytes(final boolean b) {
return new byte[] { b ? (byte) -1 : (byte) 0 };
}
Java cloud-bigtable-client 鼓励 Java 用户使用该类将原语转换为值。其他库中可能应该有一个类似的类来帮助鼓励常见的转换。
【讨论】:
您不能使用 Python 在 BigTable 中存储布尔类型。
这是documentation 所说的关于可以存储在 BigTable 中的数据类型:
Cloud Bigtable 在大多数情况下将所有数据视为原始字节字符串
因此,正如您所说,您拥有的最佳选择似乎是将“真/假”转换为字符串,并在获得数据时将数据转换回布尔值。
【讨论】: