Tworzę tabelę HBASE o wartości liczby całkowitej -17678. Ale kiedy odzyskuję ją z pheonix, daje mi to inną pozytywną wartość. RowKey jest złożonym rowkey i nie ma problemu z rowkey.Phoenix nie wyświetla ujemnych wartości całkowitych poprawnie
HBase wstawiania:
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 pobierania:
wybrać obsada ("wartość" jako liczba całkowita) z testu;
+------------------------------------------+
| TO_INTEGER(test."Value") |
+------------------------------------------+
| 2147465970 |
+------------------------------------------+
Coś tu nie tak? lub problem z feniksem?
Dzięki. Więc kiedy zapytanie za pomocą sterownika JDBC otrzymam poprawną wartość? Nie chcę wstawiać danych za pomocą phoenix, jest to API klienta hbase. –
Nie będzie działać tak jak jest, ponieważ dane nie były serializowane w formacie oczekiwanym przez Phoenix. Zaktualizowałem swoją odpowiedź przykładem, jak używać HBase do wstawiania danych, które mogą być poprawnie deserializowane przez Phoenix. – kliew
Więc jedynym rozwiązaniem byłoby wstawienie danych przy użyciu samej Pheonix? –