Tôi đang tạo bảng HBASE có giá trị là số nguyên -17678. Nhưng khi tôi lấy nó từ pheonix nó mang lại cho tôi một giá trị tích cực khác. RowKey là một rowkey tổng hợp và không có vấn đề với rowkey.Phoenix không hiển thị giá trị số nguyên âm một cách chính xác
HBase chèn:
public class test
{
public static void main(String args[])
{
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Table table = connection.getTable(TableName.valueOf("TEST"));
Integer i=-17678;
try
{
Put p = new Put(Bytes.toBytes("rowkey"));
p.addColumn(Bytes.toBytes("test"),Bytes.toBytes("test"),Bytes.toBytes(i));
table.put(p);
}
finally
{
table.close();
connection.close();
}
}
}
Phoenix hồi:
chọn CAST ("Giá trị" AS INTEGER) từ TEST;
+------------------------------------------+
| TO_INTEGER(test."Value") |
+------------------------------------------+
| 2147465970 |
+------------------------------------------+
Có gì sai ở đây? hoặc một vấn đề phượng hoàng?
Cảm ơn. Vì vậy, khi tôi truy vấn bằng cách sử dụng trình điều khiển JDBC tôi sẽ nhận được giá trị chính xác? Tôi không muốn chèn dữ liệu bằng cách sử dụng phượng, hbase client API là đặt cược. –
Nó sẽ không hoạt động vì dữ liệu không được tuần tự hóa theo định dạng mà Phoenix mong đợi. Tôi cập nhật câu trả lời của tôi với một ví dụ về cách sử dụng HBase để chèn dữ liệu có thể được deserialized đúng cách bởi Phoenix. – kliew
Vì vậy, cách giải quyết duy nhất sẽ được chèn dữ liệu bằng cách sử dụng pheonix chính nó? –