phoenix在大容量加载后显示空值,而不是存储在hbase中的实际值

d5vmydt9  于 2021-06-09  发布在  Hbase
关注(0)|答案(0)|浏览(245)

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);
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题