Sto creando una tabella HBASE con un valore intero -17678. Ma quando lo recupero da pheonix mi dà un diverso valore positivo. RowKey è una riga di comando composta e non vi sono problemi con la riga di comando. inserimentoPhoenix non visualizza correttamente i valori interi negativi
HBase:
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 recupero:
selezionare CAST ("Value" AS INTEGER) da TEST;
+------------------------------------------+
| TO_INTEGER(test."Value") |
+------------------------------------------+
| 2147465970 |
+------------------------------------------+
Qualcosa non va? o un problema di fenice?
Grazie. Quindi quando interrogherò usando il driver JDBC otterrò il valore corretto? Non voglio inserire i dati usando phoenix, l'API del client hbase è la scommessa. –
Non funzionerà così com'è perché i dati non sono stati serializzati nel formato previsto da Phoenix. Ho aggiornato la mia risposta con un esempio su come usare HBase per inserire dati che possono essere correttamente deserializzati da Phoenix. – kliew
Quindi l'unica soluzione sarebbe inserire i dati usando pheonix stesso? –