phoenix显示空值,而不是存储在hbase中的实际值。在hbase中查询数据时,一切正常,所有值都正确。此外,count操作显示phoenix中正确的行数。但是当查询任何一行时,每一列的值都是空的。
对于加载数据,我使用了与此处相同的方法:
https://medium.com/hashmapinc/3-steps-for-bulk-loading-1m-records-in-20-seconds-into-apache-phoenix-99b77ad87387
首先我创建Phoenix表。然后我从spark数据集生成hfiles,将它们存储在一些临时存储器中,并将它们批量加载到hbase表中。
它与hbase配合得很好,但在phoenix中,所有值都为null。
要转换spark行值,我使用以下方法:
if (value instanceof String) {
return PVarchar.INSTANCE.toBytes(value);
} else if (value instanceof Boolean) {
return PBoolean.INSTANCE.toBytes(value);
} else if (value instanceof Double) {
return PDouble.INSTANCE.toBytes(value);
} else if (value instanceof Float) {
return PFloat.INSTANCE.toBytes(value);
} else if (value instanceof Long) {
return PLong.INSTANCE.toBytes(value);
} else if (value instanceof Integer) {
return PInteger.INSTANCE.toBytes(value);
} else if (value instanceof Short) {
return PSmallint.INSTANCE.toBytes(value);
} else if (value instanceof BigDecimal) {
return PDecimal.INSTANCE.toBytes(value);
} else if (value instanceof Date) {
return PDate.INSTANCE.toBytes(value);
} else if (value instanceof Timestamp) {
return PTimestamp.INSTANCE.toBytes(value);
}
暂无答案!
目前还没有任何答案,快来回答吧!